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

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

Ветеран


Contributor


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

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


Вот батник с привлечением js
Код: Выделить весь код
@set @E=1; /*
@Echo Off
	cls

       	Set "FileIn=Z:\Soft_In\Pays_*.txt"
	rem                                                                         1                   2                   3                   4                   5                   6               7
	FOR %%f IN ("%FileIn%") DO Call Cscript //NoLogo /E:jscript "%~dpnx0" "%%f" "\|APLT\|" "|1201|" "\|awnb\|" "|2527|" "\|ibhb\|" "|2526|" "\|kasp\|" "|4000|" "\|kpst\|" "|4001|" "\|104\|" "|5|" "\|00000004\|" "|5|"  

	pause
GoTo :Eof

*/
var oArg = WScript.Arguments;
var nArg = oArg.Count();
var nRep = Math.floor(nArg/2);

if (nArg <= 3 || nRep == nArg/2) {
	WScript.Echo("Error! Invalid number of arguments!");
	WScript.Quit(240);
}
var FText=oArg(0);

var FSO=WScript.CreateObject("Scripting.FileSystemObject");

var InFile;
try {InFile = FSO.OpenTextFile(FText,1);}
catch (e) {
   if (e !=0 ) {
	WScript.Echo("Error! " + FText + "  " + e.description);
       	WScript.Quit(240);
     }
}
var TextAll = InFile.ReadAll();
InFile.Close();

var ss,RegRep;           

for (var i = 1; i < nArg; i+=2) {
//	WScript.Echo(oArg(i) + "  " + oArg(i+1));
	TextAll=TextAll.replace(new RegExp(oArg(i),"ig"),oArg(i+1));
}

InFile = FSO.OpenTextFile(FText,2);
InFile.Write(TextAll);
InFile.Close();
В батнике в For для каждого файла вызывается js. При этом в вызове необходимо указать пары для замены
"\|заменяемое\|" "|замена|"
Количество пар произвольно
Я принципиально хотел сохранить символы | при поиске и замене, из опасения ложного срабатывания. Но, каюсь, не сумел написать регулярное выражение, если указывать в виде
"|заменяемое|" "|замена|", поэтому приходится писать "\|заменяемое\|"
Путь к файлам укажите свой.
Надеюсь, найдутся люди и натыкают меня носом, как это сделать.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 10-08-2018 в 18:13.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:05, 10-08-2018 | #14