Имя пользователя:
Пароль:
 

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

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата Anufriev:
но всегда нужно удалить последнюю строку (подпись) она тоже меняется »
Скажите, коллега, подпись всегда одна и та же? А если могут быть разные — не попадётся ли как-нибудь однажды в подписи символ 0x0A или 0x0D, сиречь LineFeed, або CarriageReturn? Тройку нулевых символов я там уже вижу.

Цитата Anufriev:
увы, не везде и не всегда можно использовать что-то лучше cmd »
Ну, WSH везде есть.
Скрытый текст
Код: Выделить весь код
Option Explicit

Dim strSourceFolder

Dim objFSO
Dim objFile

Dim arrContent


If WScript.Arguments.Count = 1 Then
	strSourceFolder = WScript.Arguments.Item(0)
	
	Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
	
	If objFSO.FolderExists(strSourceFolder) Then
		For Each objFile In objFSO.GetFolder(strSourceFolder).Files
			If StrComp(objFSO.GetExtensionName(objFile.Name), "xml", 0) = 0 Then
				With objFSO.OpenTextFile(objFile.Path)
					arrContent = Split(.ReadAll(), vbCrLf)
					.Close
				End With
				
				ReDim Preserve arrContent(UBound(arrContent) - 1)
				
				objFile.Copy objFSO.BuildPath(strSourceFolder, objFSO.GetBaseName(objFile.Name) & ".bak"), True
				
				With objFSO.CreateTextFile(objFile.Path, True)
					.Write Join(arrContent, vbCrLf) & vbCrLf
					.Close
				End With
			Else
				' Nothing to do
			End If
		Next
	Else
		WScript.Echo "Can't find source folder [" & strSourceFolder & "]."
		WScript.Quit 2
	End If
	
	Set objFSO = Nothing
Else
	WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Source folder>"
	WScript.Quit 1
End If

WScript.Quit 0
Путь к целевому каталогу указывается параметром скрипта (также можно просто перетащить папку на скрипт в Проводнике). Для каждого обработанного xml-файла создаётся резервная копия .bak.
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:50, 17-09-2018 | #20