|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Найти текст в файле и вставить над ним несколько строк |
|
CMD/BAT - Найти текст в файле и вставить над ним несколько строк
|
Новый участник Сообщения: 41 |
Как при помощи батника или скрипта найти в файле 1.txt, например строку с текстом
search и над ней вставить три строки с текстом и текущей датой (ddmm), например search1/2712 search2/2712 search3/2712 но только, чтобы дата формировалась автоматически при вставке |
|
Отправлено: 21:50, 27-12-2017 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать |
Отправлено: 23:58, 27-12-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать |
Отправлено: 00:22, 28-12-2017 | #3 |
Новый участник Сообщения: 41
|
Профиль | Отправить PM | Цитировать Доброго времени суток!
Помогите записать два поиска в один. Прикрепил два батника. Можно ли их записать в один? Цитата alpap:
|
|
Последний раз редактировалось Sergey.l, 24-01-2018 в 21:18. Отправлено: 07:56, 24-01-2018 | #4 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата Sergey.l:
@echo off set "sx1=search" set "sx2=end" set "nd=%date:~0,2%%date:~3,2%" <folder.prm>$ (for /f "tokens=1* delims=[]" %%a in ('find /n /v ""') do @( echo "%%b"|>nul find /i "%sx1%" && ( echo __SUB__SECT: ╤шёЄхьэ√щ *∙шъ\%nd%=536870912 echo %sx1% ) || ( echo "%%b"|>nul find /i "%sx2%" && ( echo ╤шёЄхьэ√щ *∙шъ\%nd%] echo Type=536870912 echo FoldDir=D:\Dipost\BOXES\╤шёЄхьэ√щ *∙шъ\%nd% echo N_New=0 echo __SUB__SECT: ╤шёЄхьэ√щ *∙шъ\%nd%\тїюф=536870912 echo __SUB__SECT: ╤шёЄхьэ√щ *∙шъ\%nd%\юЄяЁ=536870912 echo __SUB__SECT: ╤шёЄхьэ√щ *∙шъ\%nd%\єтхф=536870912 echo ╤шёЄхьэ√щ *∙шъ\%nd%\тїюф] echo Type=536870912 echo FoldDir=D:\Dipost\BOXES\╤шёЄхьэ√щ *∙шъ\%nd%\тїюф echo N_New=0 echo ╤шёЄхьэ√щ *∙шъ\%nd%\юЄяЁ] echo Type=536870912 echo FoldDir=D:\Dipost\BOXES\╤шёЄхьэ√щ *∙шъ\%nd%\юЄяЁ echo N_New=0 echo ╤шёЄхьэ√щ *∙шъ\%nd%\єтхф] echo Type=536870912 echo FoldDir=D:\Dipost\BOXES\╤шёЄхьэ√щ *∙шъ\%nd%\єтхф echo N_New=0 echo %sx2% ) || ( <nul set/p="%%b"& echo: ) )& >nul move $ folder.prm ) ) pause |
||
Отправлено: 01:36, 25-01-2018 | #5 |
Новый участник Сообщения: 41
|
Профиль | Отправить PM | Цитировать Спасибо! Столкнулся с проблемой. При выполнении батника из папки где находиться целевой файл folder.prm компьютер начинает виснуть и файлик $ увеличивается со скоростью 0.1 кбайт/с. Файл в котором осуществляется поиск (folder.prm) объемом всего лишь 12 Кбайт. Непойму с чем может быть связано такое замедление процесса?
Цитата alpap:
|
||
Отправлено: 14:15, 27-01-2018 | #6 |
Ветеран Сообщения: 2728
|
Профиль | Отправить 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();
Можно вставить вместо нескольких искомых строк тексты, можно обработать несколько текстовых файлов, вызывая js-скрипт с конкретными данными, указанными в аргументах. Уточнение задачи
Цитата Sergey.l:
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 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
|
|
Отправлено: 23:06, 28-01-2018 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Найти текст в файле и вставить над ним несколько строк | Sergey.l | Скриптовые языки администрирования Windows | 5 | 27-12-2017 18:47 | |
CMD/BAT - Поиск строк и добавление к ним цифр в файле | mountainspeak | Скриптовые языки администрирования Windows | 1 | 09-11-2016 13:34 | |
CMD/BAT - [решено] CMD/BAT - С помощью bat-ника найти и удалить текст в файле | InVariable | Скриптовые языки администрирования Windows | 4 | 22-05-2015 20:06 | |
CMD/BAT - Найти и заменить текст в файле. | Yurich75 | Скриптовые языки администрирования Windows | 2 | 07-01-2012 19:09 | |
CMD/BAT - С помощью bat-ника найти и заменить текст в файле на текст из другого файла | Nun-Nun | Скриптовые языки администрирования Windows | 1 | 08-03-2011 15:25 |
|