Цитата Iska:
либо имя конфигурационного файла, содержащего потребные параметры »
|
Это было бы хорошо. Запустил скрипт, он открыл конфигурацию, ты внёс свои правки, сохранил, закрыл файл и продолжилась обработка.
Цитата Iska:
Что Вы под этим понимаете? »
|
Я имела в виду проверку, все ли файлы скачались из списка.
Цитата Iska:
P.S. Поиск и замена в html-файлах — задача никак не для пакетных файлов. »
|
А как же это?
Кажется это ваш код, если не ошибаюсь. И он отлично работает. Из одного файла берёт что ищем, из другого чем заменяем. И обрабатывает всю папку с подпапками.
Код:

Option Explicit
Const ForReading = 1
Const ForWriting = 2
Dim objArgs
Dim objFSO
Dim objFile
Dim strWhatFind
Dim strReplaceBy
Dim strContent
Set objArgs = WScript.Arguments.Named
If objArgs.Count = 4 Then
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
If objArgs.Exists("FolderForScan") Then
If objArgs.Exists("FileExtension") Then
If objArgs.Exists("FileWhatFind") Then
If objArgs.Exists("FileReplaceBy") Then
If objFSO.FolderExists(objArgs.Item("FolderForScan")) Then
If objFSO.FileExists(objArgs.Item("FileWhatFind")) Then
If objFSO.FileExists(objArgs.Item("FileReplaceBy")) Then
If objFSO.GetFile(objArgs.Item("FileWhatFind")).Size > 0 Then
With objFSO.OpenTextFile(objArgs.Item("FileWhatFind"), ForReading)
strWhatFind = .ReadAll()
.Close
End With
If objFSO.GetFile(objArgs.Item("FileReplaceBy")).Size > 0 Then
With objFSO.OpenTextFile(objArgs.Item("FileReplaceBy"), ForReading)
strReplaceBy = .ReadAll()
.Close
End With
Else
strReplaceBy = ""
End If
WScript.Echo "Folder for scan: " & objArgs.Item("FolderForScan")
WScript.Echo "File extension: " & objArgs.Item("FileExtension")
WScript.Echo "File what find: " & objArgs.Item("FileWhatFind")
WScript.Echo "File replace by: " & objArgs.Item("FileReplaceBy")
WScript.Echo
ScanSubFolders objFSO.GetFolder(objArgs.Item("FolderForScan"))
Else
WScript.Echo "File [" & objArgs.Item("FileWhatFind") & "] is zero length"
End If
Else
WScript.Echo "File [" & objArgs.Item("FileWhatFind") & "] not found"
End If
Else
WScript.Echo "File [" & objArgs.Item("FileWhatFind") & "] not found"
End If
Else
WScript.Echo "Folder [" & objArgs.Item("FolderForScan") & "] not found"
End If
Else
WScript.Echo "Not found argument <FileReplaceBy>"
Call Usage
End If
Else
WScript.Echo "Not found argument <FileWhatFind>"
Call Usage
End If
Else
WScript.Echo "Not found argument <FileExtension>"
Call Usage
End If
Else
WScript.Echo "Not found argument <FolderForScan>"
Call Usage
End If
Set objFSO = Nothing
Else
Call Usage
End If
Set objArgs = Nothing
WScript.Quit
'=============================================================================
'=============================================================================
Sub ScanSubFolders(objFolder)
Dim objSubFolder
Dim objFile
WScript.Echo "[" & objFolder.Path & "]"
For Each objFile In objFolder.Files
If UCase(objFSO.GetExtensionName(objFile.Name)) = UCase(objArgs.Item("FileExtension")) Then
WScript.Echo " " & objFile.Name
If objFile.Size > 0 Then
With objFSO.OpenTextFile(objFile.Path, ForReading)
strContent = .ReadAll()
.Close
End With
If InStr(1, strContent, strWhatFind, vbTextCompare) > 0 Then
WScript.Echo " Fragment for replace found"
With objFSO.OpenTextFile(objFile.Path, ForWriting)
.Write Replace(strContent, strWhatFind, strReplaceBy)
.Close
End With
End If
End If
End If
Next
WScript.Echo
For Each objSubFolder In objFolder.SubFolders
ScanSubFolders objSubFolder
Next
End Sub
'=============================================================================
'=============================================================================
Sub Usage()
WScript.Echo "Usage: cscript.exe //nologo " & WScript.ScriptName & " " & _
"/FolderForScan:<folder> " & _
"/FileExtension:<extension> " & _
"/FileWhatFind:<file> " & _
"/FileReplaceBy:<file>"
End Sub
'=============================================================================
Вызывается
Код:

cscript.exe //nologo replace.vbs /FolderForScan:"%UserProfile%\work" /FileExtension:"html" /FileWhatFind:"text\utf_s.txt" /FileReplaceBy:"text\utf_r.txt"
Его бы модифицировать, чтобы он считал сначала количество совпадений, а потом предлагал либо выйти, либо продолжить. Если продолжить, то в конце операции писал бы количество замен.