1

Тема: CMD/BAT: Множественная замена слов в файлах .html

Здравствуйте!
Помогите пожайлуста сделать множественную замену слов в большом количестве файлов html.

К примеру в папке C:\Documents and Settings\admin\Рабочий стол\ER2\es-1 лежит 500 html файлов,
нужно чтобы cmd файл находил и менял слова(они могут быть с пробелами):
no=yes
hi=bye
today=morrow
и так далее.
Сам не могу разобраться((
Заранее очень благодарен за помощь.

2

Re: CMD/BAT: Множественная замена слов в файлах .html

igor980, сколько Вы насчитаете слов "no" в строке

no no. no! no? "no" no: @no No -no <no> no&yes no not NO no, no; [no] no=yes (no) no- no+yes now no

?

3 (изменено: igor980, 2015-01-07 12:29:58)

Re: CMD/BAT: Множественная замена слов в файлах .html

Cлов "no" может быть разное количество в строке,в зависимости от текста в файле

4

Re: CMD/BAT: Множественная замена слов в файлах .html

igor980, командный язык Windows - далеко не Bash, а потому продвинутые операции с текстом предпочтительней проводить либо с помощью WSH, либо PowerShell, если конечно не устраивают сторонние утилиты вроде порта sed, grep или awk для Windows. В противном случае Вы рискуете попортить нервы не только себе, но и другим.

5

Re: CMD/BAT: Множественная замена слов в файлах .html

Yury пишет:

igor980, сколько Вы насчитаете слов "no" в строке

no no. no! no? "no" no: @no No -no <no> no&yes no not NO no, no; [no] no=yes (no) no- no+yes now no

?

igor980 пишет:

Cлов "no" может быть разное количество в строке,в зависимости от текста в файле


"С Вами всё ясно..."

6

Re: CMD/BAT: Множественная замена слов в файлах .html


var FOLDER_PATH = "D:\\MY\\OUT";
var arrReplaceStrings = [ ["no","yes"],["hi","bye"] ];
var reFileMask = /.*.\.html$/i;

var fso = new ActiveXObject("Scripting.FileSystemObject");
var oFolder = fso.GetFolder(FOLDER_PATH);
var fc = new Enumerator(oFolder.files);
var allText = "", ts;
for (; !fc.atEnd(); fc.moveNext())
{
    var fileName = fc.item().Name;
    if(!reFileMask.test(fileName)) continue;
    ts = fc.item().OpenAsTextStream(1,0);
    allText = ts.ReadAll();
    ts.Close();
    ts = fso.CreateTextFile(fc.item().Path+"_",true);
    for(var i = 0;i<arrReplaceStrings.length;i++)
    {
        var re = new RegExp("\\b"+arrReplaceStrings[i][0]+"\\b","gi");
        //Script.Echo(""+arrReplaceStrings[i][0]);
        allText = allText.replace(re,arrReplaceStrings[i][1]);        
    }
    ts.Write(allText);
    ts.Close();        
}
WScript.Echo("The End");