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

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

Ветеран


Contributor


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

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


alpap, Sergey.l,
Ненавижу!!! Работать с текстом в CMD. Вот совместил CMD и JS. ИМХО, это надежнее.
Код: Выделить весь код
@set @E=1; /*
@Echo Off

rem chcp 1251 >nul

Set "TextFile=Z:\Box_In\1.txt"
Set "Dt=%Date:~0,2%%Date:~3,2%"

Cscript //NoLogo /E:jscript "%~dpnx0" "%TextFile%" "Ищем 1" "Вставляем 1/%Dt%" "Вставляем 2/%Dt%" "Вставляем 3/%Dt%"
Cscript //NoLogo /E:jscript "%~dpnx0" "%TextFile%" "Ищем 2" "Вставляем 4/%Dt%" "Вставляем 5/%Dt%" "Вставляем 6/%Dt%"

GoTo :Eof

*/
var oArg = WScript.Arguments;

if (oArg.Count()<3) {WScript.Echo("ErrorLevel=1: Few arguments");WScript.Quit(1)}

var InsTxt="";
//var InsTxt="\n";
for (var i=2; i<oArg.Count(); i++) {InsTxt=InsTxt+oArg(i)+"\n"}
//WScript.Echo(oArg(1)+"\n"+InsTxt);

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

try {inFile=FSO.OpenTextFile(oArg(0),1)}
catch (err) {if (err != 0) {WScript.Echo("ErrorLevel=2: "+err.description);WScript.Quit(2)}}
AllTxt=inFile.ReadAll();
inFile.Close();

AllTxt=AllTxt.replace(oArg(1),InsTxt+oArg(1));

try {inFile=FSO.OpenTextFile(oArg(0),2,true)}
catch (err) {if (err != 0) {WScript.Echo("ErrorLevel=3: "+err.description);WScript.Quit(3)}}
inFile.Write(AllTxt);
inFile.Close();
Вставить можно произвольное число строк >=1, указав их при вызове js-скрипта
Можно вставить вместо нескольких искомых строк тексты, можно обработать несколько текстовых файлов, вызывая js-скрипт с конкретными данными, указанными в аргументах.
Уточнение задачи
Цитата Sergey.l:
Как при помощи батника или скрипта найти в файле 1.txt, например строку с текстом
search »
Я предполагал, что search начинается с новой строки и надо в ответе получить

search1/2712
search2/2712
search3/2712
search

Если у Вас ситуация тра ля ля search, то скрипт приведёт к результату:

тра ля ля search1/2712
search2/2712
search3/2712
search

Если это Вас не устраивает, то в скрипте вместо
var InsTxt="";

напишите
var InsTxt="\n";

ПолУчите

тра ля ля
search1/2712
search2/2712
search3/2712
search

Я предполагал, что скрипт сохраняется в 866 кодировке, в противном случае вместо
rem chcp 1251 >nul
сделайте
chcp 1251 >nul

текстовый файл в кодировке 1251 (это существенно при наличии кириллических символов в искомом слове и во вставляемых строках в файле)

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


Последний раз редактировалось megaloman, 28-01-2018 в 21:33.

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

Отправлено: 18:42, 28-01-2018 | #7