Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Creat0R

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