$put_perv_real = "/home/www/dvakompa-ru/dopol/"; ?>
Сегодня столкнулся с необходимостью поменять текстовку в сотне файлов на сервере вод управлением Windows
.
В среде linux
такие задачи решаются просто с помощью sed
и ключа '-i', но в среде Windows аналогов sed нету.
Пришлось изощряться. Для начала создал файл C:\repl.vbs
со следующим содержанием:
Const ForReading = 1 Const ForWriting = 2strFileName = Wscript.Arguments(0) strOldText = Wscript.Arguments(1) strNewText = Wscript.Arguments(2)Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile(strFileName, ForReading)strText = objFile.ReadAll objFile.Close strNewText = Replace(strText, strOldText, strNewText)Set objFile = objFSO.OpenTextFile(strFileName, ForWriting) objFile.Write strNewText objFile.Close
Пользоваться им нужно в командной строке следующим образом:
cscript C:\repl.vbs "c:\имя_файла.txt" "FOO" "BAR"
Даная конструкция меняет FOO на BAR в файле c:\имя_файла.txt
Вооружившись этой статьей обрабатываем все файлы - ищем "FOO" и меняем на "BAR":
set _find_cmd=findstr /M /P /S /R /I "FOO" *
for /f "tokens=*" %f IN ('%_find_cmd%') DO cscript c:\repl.vbs "%f" "FOO" "BAR"