Must AutoIt
Сообщения: 3054
Благодарности: 1009
|
Профиль
|
Сайт
|
Отправить PM
| Цитировать
Цитата D_Master:
Объясню, для чего мне это нужно »
|
Ясно. Ну тогда всё что могу посоветовать, так это использовать не батник для этого, а, к примеру скриптовый язык AutoIt, ну или VBS-ку:
CRLF_Stripper.vbs
Код: 
'===========================================================================================================
' [CRLF Stripper]
' Скрипт позволяющий удалять символы перевода строки и возврата каретки (vbCRLF) на конце или в начале файла.
'
' Синтаксис: "FileName" [/Flag /rTimes]
'
' * FileName - Полный путь до файла назначение.
' * /Flag - Указывает метод удаления vbCRLF.
' 0 убирает в начале файла, 1 на конце, и -1 в начале и на конце.
' * /rTimes - Указывает число удаления vbCRLF (сколько символов vbCRLF удалять. По умолчанию все).
'
' Пример запуска: Wscript.exe CRLF_Stripper.vbs "C:\File.txt" 1 -1
' * Удалит все заверщающие символы перевода строки в файле C:\File.txt.
'
' Автор: G.Sandler
'===========================================================================================================
Const ForReading = 1, ForWriting = 2, ForAppending = 8
QuiteMode = 1
sFilePath = GetParentDir() & "\TextFile.txt"
iRemoveMethod = 1 'Удалять vbCRLF только на конце файла
iRemoveTimes = -1 'Удалять vbCRLF столько раз сколько встретится на конце/в начале файла
'Определяем параметры ком. строки
If WScript.Arguments.Count > 0 Then sFilePath = WScript.Arguments(0)
If WScript.Arguments.Count > 1 Then iRemoveMethod = Int(WScript.Arguments(1))
If WScript.Arguments.Count > 2 Then iRemoveTimes = Int(WScript.Arguments(2))
sFileName = Mid(sFilePath, InStrRev(sFilePath, "\", -1, 1)+1)
'=========================================================
On Error Resume Next
Set oFSO = CreateObject("Scripting.FileSystemObject")
'Проверяем существование файла
If Not oFSO.FileExists(sFilePath) Then
sInitDir = ""
If WScript.Arguments.Count > 0 Then
If QuiteMode = 1 Then Wscript.Quit
MsgBox _
"Файл [" & sFileName & "] не существует. Укажите файл...", _
48, "CRLF Stripper - Ошибка"
sInitDir = Left(sFilePath, InStrRev(sFilePath, "\", -1, 1)-1)
If sInitDir = "" Then sInitDir = GetParentDir()
End If
sFilePath = FileOpenDialog("CRLF Stripper - Укажите файл для обработки", sInitDir, _
"Text Files (*.txt)|*.txt|All Files (*.*)|*.*", sFileName)
If sFilePath = -1 Then Wscript.Quit
If Not oFSO.FileExists(sFilePath) Then
MsgBox _
"Указанный вами файл [" & sFileName & "] не существует." & vbCRLF & vbCRLF & "OK ===> EXIT", _
48, "CRLF Stripper - Ошибка"
Wscript.Quit
End If
sFileName = Mid(sFilePath, InStrRev(sFilePath, "\", -1, 1)+1)
End If
'Открываем файл для *Чтения*
Set oTxtFile = oFSO.OpenTextFile(sFilePath, ForReading)
'Читаем файл
sReadFile = oTxtFile.ReadAll
'Закрываем файл
oTxtFile.Close
'Открываем файл для *Записи*
Set oTxtFile = oFSO.OpenTextFile(sFilePath, ForWriting, True)
'Пишем в файл данные (считанные ранее) без символов перевода строки и возврата каретки (в соответствии с параметрами)
iCounter = 0
Select Case iRemoveMethod
Case 0, -1
Do While Left(sReadFile, 2) = vbCRLF
sReadFile = Right(sReadFile, Len(sReadFile)-2)
iCounter = iCounter + 1
If iRemoveTimes <> -1 And iCounter = iRemoveTimes Then Exit Do
Loop
End Select
iCounter = 0
Select Case iRemoveMethod
Case 1, -1
Do While Right(sReadFile, 2) = vbCRLF
sReadFile = Left(sReadFile, Len(sReadFile)-2)
iCounter = iCounter + 1
If iRemoveTimes <> -1 And iCounter = iRemoveTimes Then Exit Do
Loop
End Select
oTxtFile.Write sReadFile
'Закрываем файл
oTxtFile.Close
'Если скрипт был вызван без параметров, выводим сообщение о завершении...
If WScript.Arguments.Count = 0 Or QuiteMode = 0 Then
MsgBox _
"Обработка файла [" & sFileName & "] удачно завершена!", _
64, _
"CRLF Stripper - Сообщение..."
End If
'Функция для получения полного пути родительского каталога
Function GetParentDir()
sPath = WScript.ScriptFullName
GetParentDir = Left(sPath, InStrRev(sPath, "\", -1, 1)-1)
End Function
'Функция для отображения системного диалога выбора файла
Function FileOpenDialog(sTitle, sInitDir, sFilter, sDefaultName)
Set obj = CreateObject("MSComDlg.CommonDialog")
obj.Filter = sFilter
obj.MaxFileSize = 256
obj.DialogTitle = sTitle
obj.FileName = sDefaultName
obj.InitDir= sInitDir
On Error Resume Next
obj.CancelError = True
Err.Clear
obj.ShowOpen
If Err.Number = 32755 Then
'Cancel Pressed
FileOpenDialog = -1
ElseIf Err.Number <> 0 Then
'Other errors
FileOpenDialog = Err.Number
Else
FileOpenDialog = obj.FileName
End If
End Function
В нашем случае использовать можно так:
Код: 
@Echo Off
Echo C:\WINDOWS> Exe.txt&&Wscript "CRLF_Stripper.vbs" "Exe.txt" 1 -1
|
-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.” Альберт Эйнштейн
P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»
http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community
Последний раз редактировалось Creat0R, 22-12-2008 в 15:38.
Отправлено: 15:16, 22-12-2008
| #536
|