|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Вставить слово между текстом |
|
|
CMD/BAT - [решено] Вставить слово между текстом
|
Пользователь Сообщения: 122 |
Всем доброго дня
Имеется текстовый файл такого порядка: 1=имя 2=имя 3=имя и так далее.. Как вставить слово между - например: 1=слово\имя 2=слово\имя 3=слово\имя То есть нужно вставить одно и тоже слово после = В начало и в конец строки я могу, но как добавить слово между ? Буду благодарен за помощь! |
|
------- Отправлено: 13:33, 22-11-2022 |
Ветеран Сообщения: 2631
|
Профиль | Отправить PM | Цитировать Вот еще вариант. Примеры файлов из предыдущего поста.
@Echo Off cls Set "FileIn=Z:\Box_In\непостоянный файл.txt" Set "Fsprav=Z:\Box_In\постоянный справочник.txt" Set "WordIn=слово\" Set "WordInChm=выражение\" Set "Chm=.Chm" >nul 2>&1 Find "=%WordIn%" "%FileIn%" &&(Echo File "%FileIn%" has already been processed &Pause &Exit /B) >nul 2>&1 Find "=%WordInChm%" "%FileIn%" &&(Echo File "%FileIn%" has already been processed &Pause &Exit /B) >"%FileIn%.tmp" (FOR /F "usebackq tokens=1* delims==" %%i In ("%FileIn%") DO ( If "%%j"=="" (Echo %%i) Else (Call :Out "%%i" "%%j") )) >nul Move /Y "%FileIn%.tmp" "%FileIn%" pause Exit /B :Out >nul FindStr /I /B /C:"%~2%Chm% " /C:"%~2 " "%Fsprav%"||(<nul Set /P Str=%~1=%~2&Echo.&Exit /B 0) >nul FindStr /I /B "%~2%Chm% " "%Fsprav%"&&(<nul Set /P Str=%~1=%WordInChm%&FindStr /I "%~2%Chm% " "%Fsprav%"&Exit /B 0) >nul FindStr /I /B "%~2 " "%Fsprav%"&&(<nul Set /P Str=%~1=%WordIn%&FindStr /I "%~2 " "%Fsprav%"&Exit /B 0) Exit /B |
------- Отправлено: 13:23, 05-12-2022 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать megaloman
@Echo Off cls Set "FileIn=Z:\Box_In\run.ini" Set "Fsprav=Z:\Box_In\setup.ini" Set "WordInExe={src}\" Set "WordInMsi=msiexec.exe /i {src}\" >nul 2>&1 Find "%WordInExe%" "%FileIn%" &&(Echo File "%FileIn%" has already been processed &Pause &Exit /B) >nul 2>&1 Find "%WordInMsi%" "%FileIn%" &&(Echo File "%FileIn%" has already been processed &Pause &Exit /B) FOR /F "usebackq tokens=1* delims= " %%i In ("%Fsprav%") DO ( If /I "%%~xi"==".exe" Set "%%i=%WordInExe%%%i %%j" If /I "%%~xi"==".msi" Set "%%i=%WordInMsi%%%i %%j" ) Set /A N=1000000 (Set /P @@@1000000=<"%FileIn%") FOR /F "usebackq skip=1 tokens=1* delims==" %%i In ("%FileIn%") DO ( Call Set /A N+=%%i Call Set "@@@%%N%%=%%i=%%%%j%%" Call :Missing "%%%%j%%" "@@@%%N%%" "%%i=%%j" ) >"%FileIn%" (FOR /F "usebackq tokens=1* delims==" %%i In (`Set "@@@"`) DO Echo %%j) pause Exit /B :Missing If "%~1"=="" (Set %~2=%~3) Exit /B Огромная вам благодарность за проделанную работу! С уважением! |
------- Отправлено: 19:43, 05-12-2022 | #22 |
Ветеран Сообщения: 2631
|
Профиль | Отправить PM | Цитировать Перепевка этого скрипта
@Echo Off cls Set "FileIn=Z:\Box_In\run.ini" Set "Fsprav=Z:\Box_In\setup.ini" rem Set "WordInExe={src}\" Set "WordInExe=Start /W " rem Set "WordInMsi=msiexec.exe /i {src}\" Set "WordInMsi=Start /W msiexec.exe /i " >nul 2>&1 Find "%WordInExe%" "%FileIn%" &&(Echo File "%FileIn%" has already been processed &Pause &Exit /B) >nul 2>&1 Find "%WordInMsi%" "%FileIn%" &&(Echo File "%FileIn%" has already been processed &Pause &Exit /B) FOR /F "usebackq tokens=1* delims= " %%i In ("%Fsprav%") DO ( If /I "%%~xi"==".exe" Set "%%i=%WordInExe%%%i %%j" If /I "%%~xi"==".msi" Set "%%i=%WordInMsi%%%i %%j" ) Set /A N=1000000 (Set /P @@@1000000=<"%FileIn%") FOR /F "usebackq skip=1 tokens=1* delims==" %%i In ("%FileIn%") DO ( Call Set /A N+=%%i Call Set "@@@%%N%%=%%%%j%%" Call :Missing "%%%%j%%" "@@@%%N%%" "%%i=%%j" ) >"%FileIn%" ( Call :Begin FOR /F "usebackq tokens=1* delims==" %%i In (`Set "@@@"`) DO (Echo %%j) Call :End ) pause Exit /B :Missing If "%~1"=="" (Set %~2=) Exit /B :Begin (Echo What animal can jump) (Echo higher than a house?) Exit /B :End (Echo Any animal.) (Echo Houses can't jump.) Exit /B |
------- Отправлено: 11:01, 11-12-2022 | #23 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать megaloman
Спасибо, но я никак понять не могу, для чего такая перепевка скрипта если мы изначально можем вставить то что хотим ??? Единственное что делает скрипт так это меняет Set WordInExe, Set WordInMsi с одного имени на другое. Задача ведь была другая, а именно убрать нумерацию рождаемого файла, там где получали: 1=Start /W SetupName.exe -y чтобы стало Start /W SetupName.exe -y То есть добавление в прошлый скрипт команды на удаление всех 1=, 2=, 3= |
------- Отправлено: 14:24, 11-12-2022 | #24 |
Ветеран Сообщения: 2631
|
Профиль | Отправить PM | Цитировать Цитата minutka15:
Цитата minutka15:
Что дано? Если это результат отработки предыдущего скрипта, зачем нужен костыль для убирания нумерации? Если исходный файл как в начальной постановке, то лучше сделать сразу требуемое без промежуточных костылей. Не плодите новые сущности без крайней необходимости. Костыль
@Echo Off cls Set "FileIn=Z:\Box_In\run.ini.1.txt" Set /A N=1000000 FOR /F "usebackq tokens=1* delims==" %%i In ("%FileIn%") DO ( Call Set /A N+=1 Set "Name=%%i" If "%%j"=="" (Call Set @@@%%N%%=%%i) Else (Call Set @@@%%N%%=%%j) ) >"%FileIn%" (FOR /F "usebackq tokens=1* delims==" %%i In (`Set "@@@"`) DO Echo %%j) pause Exit /B |
||
------- Отправлено: 16:52, 11-12-2022 | #25 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать megaloman,
Спасибо батник очищает от 1= как раз что было нужно Можно сделать один батник вместо двух чтобы изначально получалось без 1= ? Да еще одно но.. если прописать так - Set "WordInExe=RunProgram="" то батник молчит, то есть дополнительный символ " как бы не переносится. А в позапрошлом скрипте #17 переносится все что пропишешь. Лучше скрипт #17 модифицировать как окончательный вариант и я решил бы все проблемы. |
------- Отправлено: 17:22, 11-12-2022 | #26 |
Ветеран Сообщения: 2631
|
Профиль | Отправить PM | Цитировать Цитата minutka15:
|
|
------- Отправлено: 19:25, 11-12-2022 | #27 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать megaloman
С тем скриптом нет возможности передавать такие" значения. Если на выходе делать батник то он пойдет т.к. мы передаем start /w без специальных символов. В случае если на выходе иметь конфиг для 7z sfx то нам нужно передать слово с символом RunProgram=" и скрипт не работает. С прошлым скриптом все получается. Собрал таким образом, вроде бы работает: @Echo Off cls Set "FileIn=run.txt" Set "Fsprav=setup.ini" Set "WordIn=RunProgram="" Set "WordIn_=RunProgram="" >nul 2>&1 Find "=%WordIn%" "%FileIn%" &&(Echo File "%FileIn%" has already been processed &Exit /B) >nul 2>&1 Find "=%WordIn_%" "%FileIn%" &&(Echo File "%FileIn%" has already been processed &Exit /B) >"%FileIn%.tmp" (FOR /F "usebackq tokens=1* delims==" %%i In ("%FileIn%") DO ( If "%%j"=="" (Echo %%i ) Else ( Set "WordAdd=%WordIn%" Echo %%j|>nul 2>nul FindStr /B "_"&&Set "WordAdd=%WordIn_%" <nul Call Set /P Str=%%i=%%WordAdd%% FindStr /B /I "%%j " "%Fsprav%" ||Echo %%j ) )) >nul Move /Y "%FileIn%.tmp" "%FileIn%" Set /A N=1000000 FOR /F "usebackq tokens=1* delims==" %%i In ("%FileIn%") DO ( Call Set /A N+=1 Set "Name=%%i" If "%%j"=="" (Call Set @@@%%N%%=%%i) Else (Call Set @@@%%N%%=%%j) ) >"%FileIn%" (FOR /F "usebackq tokens=1* delims==" %%i In (`Set "@@@"`) DO Echo %%j) Exit /B команды идут в таком порядке RunProgram="имя-установщика.exe -y" осталось допилить начало и конец Спасибо за помощь !!!! P.S Мне на самом верху рожденного файла нужно добавить 4 строчки не затрагивая сам текст первую я добавляю так: powershell "Get-ChildItem run.txt | ForEach-Object { $f=$_ | Get-Content -ReadCount 0; $f[0]=';!@Install@!UTF-8!'; Set-Content $_.FullName $f }" Как этого избежать? Первая строка в обязательном порядке должна быть на самом верху, а остальные три можно подсунуть в конец списка... |
------- Последний раз редактировалось minutka15, 11-12-2022 в 20:24. Отправлено: 20:09, 11-12-2022 | #28 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
2013 - Как в ворде объединить несколько файлов и между ними вставить горизонтальные линии? | megagogo | Microsoft Office (Word, Excel, Outlook и т.д.) | 0 | 01-03-2015 14:29 | |
Угадай слово ;) | perchinka | Флейм | 395 | 05-08-2014 07:33 | |
CMD/BAT - Удалить последнее слово в строке | AlekseyB. | Скриптовые языки администрирования Windows | 15 | 12-09-2013 10:28 | |
C/C++ - Слово написанное больше всех | Vunderkind | Программирование и базы данных | 10 | 07-11-2010 20:06 | |
Все знают про обьеденение строк ('слово'&'еще слово'), а есть ли способ исключениеня? | tweakos | AutoIt | 3 | 15-07-2009 09:52 |
|