|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Вставить слово между текстом |
|
CMD/BAT - [решено] Вставить слово между текстом
|
Пользователь Сообщения: 122 |
Всем доброго дня
Имеется текстовый файл такого порядка: 1=имя 2=имя 3=имя и так далее.. Как вставить слово между - например: 1=слово\имя 2=слово\имя 3=слово\имя То есть нужно вставить одно и тоже слово после = В начало и в конец строки я могу, но как добавить слово между ? Буду благодарен за помощь! |
|
------- Отправлено: 13:33, 22-11-2022 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать megaloman
А можно сделать одно действие если в тексте "постоянный справочник.txt" имеется например такое имя: 1=_Саша Когда такое имя которое начинается с символом _имя выпадет в "непостоянный файл.txt" то мы просто создаем текстовый файл _имя.txt в той же папке. и это имя не вносим в преобразованный файл. |
------- Последний раз редактировалось minutka15, 24-11-2022 в 20:52. Отправлено: 20:28, 24-11-2022 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2631
|
Профиль | Отправить PM | Цитировать @Echo Off cls Set "FileIn=Z:\Box_In\непостоянный файл.txt" Set "Fsprav=Z:\Box_In\постоянный справочник.txt" Set "WordIn=слово\" >nul 2>&1 Find "=%WordIn%" "%FileIn%" &&(Echo File "%FileIn%" has already been processed &Pause &Exit /B) For %%d In ("%FileIn%") Do ( FOR /F "usebackq tokens=1* delims==" %%i In (`2^>nul findstr "=_" "%FileIn%"`) DO >"%%~dpd%%j.txt" cd. ) Set /A N=0 >"%FileIn%.tmp" (FOR /F "usebackq tokens=1* delims==" %%i In (`2^>nul findstr /V "=_" "%FileIn%"`) DO ( If "%%j"=="" (Echo %%i ) Else ( Call Set /A N+=1 <nul Call Set /P Str=%%N%%=%WordIn% FindStr /B /I "%%j " "%Fsprav%" ||Echo %%j ) )) >nul Move /Y "%FileIn%.tmp" "%FileIn%" pause Exit /B |
------- Отправлено: 16:12, 25-11-2022 | #12 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать megaloman
Спасибо большое, однако эти имена вносятся в завершенный список чего следует исключить. В моем проекте не предусмотрен вариант где можно отменить действие с существующим именем в завершенном списке. Хотя если поправить в завершенном списке эти имена: вместо 1=_Саша вписывать F1=1, _Саша превращается в F1 Чтобы все имена с началом _ получались в завершенном списке F1=1 F2=1 F3=1 Как вариант можно сделать отдельный батник для таких _имя файлов и отдельный завершенный список. В проекте я могу запустить его второй командой и получить второй список. это не страшно. |
------- Отправлено: 18:27, 25-11-2022 | #13 |
Ветеран Сообщения: 2631
|
Профиль | Отправить PM | Цитировать Для начала
Цитата minutka15:
Цитата minutka15:
"постоянный справочник.txt"
Аня +дополнительное слово 1 Ася +дополнительное слово 2 Саша +дополнительное слово 3 Вася +дополнительное слово 4 Петя +дополнительное слово 5 Ваня +дополнительное слово 6 Инокентий +дополнительное слово 7 Филипп +дополнительное слово 8 Алиса +дополнительное слово 9 Эллис +дополнительное слово 10 Сергей +дополнительное слово 11 "непостоянный файл.txt"
"непостоянный файл.txt после обработки
Что Имеем Что надо получить, а то тихо шифером шурша крыша едет неспеша, приходится фантазировать. |
||
------- Отправлено: 19:20, 25-11-2022 | #14 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать megaloman,
Я извиняюсь. Я не только себе противоречу но и логике)) Совершенно верно. Дело в том, что я поправил для себя исключение _ в виде _М в скрипте в верхней части а в нижней части забыл поправить >"%FileIn%.tmp" (FOR /F "usebackq tokens=1* delims==" %%i In (`2^>nul findstr /V "=_" "%FileIn%"`) DO ( вот и стал велосипед изобретать. Как говорится старость не радость... Все супер, скрипт работает четко и без помех! |
------- Отправлено: 19:35, 25-11-2022 | #15 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать Уважаемый megaloman,
У меня последняя просьба. В виду того что я тут по своей же вине напортачил, оказалось что для таких 1=_Саша создавать текстовый файл не нужно. Извиняюсь что ошибся, понял только после дальнейшего анализа. Однако для смогу задействовать такой скрипт если вдруг понадобится. Все что нужно это задействовать в скрипте второй (Set "WordIn2=слово\") для слов которые начинаются с _имя. И эти слова в завершенном списке как и все другие, но начальное слово будет отличаться от других. то есть если у нас 1=слово\Алиса +дополнительное слово то в 2=слово2\_Имя +дополнительное слово Я самостоятельно смог бы наковырять второй батник из строчек, однако хотелось бы завершить весь сценарий одним скриптом. |
------- Отправлено: 22:31, 25-11-2022 | #16 |
Ветеран Сообщения: 2631
|
Профиль | Отправить PM | Цитировать @Echo Off cls Set "FileIn=Z:\Box_In\непостоянный файл.txt" Set "Fsprav=Z:\Box_In\постоянный справочник.txt" Set "WordIn=слово\" Set "WordIn_=выражение\" >nul 2>&1 Find "=%WordIn%" "%FileIn%" &&(Echo File "%FileIn%" has already been processed &Pause &Exit /B) >nul 2>&1 Find "=%WordIn_%" "%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 ( 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%" pause Exit /B Примеры файлов
Аня +дополнительное слово 1 Ася +дополнительное слово 2 Саша +дополнительное слово 3 Вася +дополнительное слово 4 _Петя +дополнительное слово 5 Ваня +дополнительное слово 6 Инокентий +дополнительное слово 7 _Филипп +дополнительное слово 8 Алиса +дополнительное слово 9 Эллис +дополнительное слово 10 Сергей +дополнительное слово 11 Вера +дополнительное слово 12 Марина +дополнительное слово 13 |
------- Последний раз редактировалось megaloman, 26-11-2022 в 10:56. Отправлено: 10:47, 26-11-2022 | #17 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать megaloman,
Вот Спасибо! После того как это действие выполняется на все 100% - мой проект ожил после долгой спячки. Как раз то что хотел иметь долгое время но никак не получалось. Благодарю из глубины души ! Жму руку! |
------- Отправлено: 15:17, 26-11-2022 | #18 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Set "WordIn_=выражение\" где мы ищем первую букву _ Echo %%j|>nul 2>nul FindStr /B "_"&&Set "WordAdd=%WordIn_%" Заменить на поисковое слово ".chm" в конце слова... Одним словом вместо поиска значения в начале слова "_" искать только расширения файлов *.chm |
|
------- Отправлено: 00:50, 02-12-2022 | #19 |
Ветеран Сообщения: 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 ( >nul FindStr /I /C:"%%j%Chm% " "%Fsprav%"&&(<nul Call Set /P Str=%%i=%WordInChm%&FindStr /I /C:"%%j%Chm%" "%Fsprav%") >nul FindStr /I /C:"%%j%Chm%" "%Fsprav%"||( >nul FindStr /I "%%j " "%Fsprav%"||(Echo %%i=%%j) >nul FindStr /I "%%j " "%Fsprav%"&&(<nul Call Set /P Str=%%i=%WordIn%&FindStr /I /C:"%%j" "%Fsprav%") )) )) >nul Move /Y "%FileIn%.tmp" "%FileIn%" pause Exit /B Файлы
"непостоянный файл.txt"
"постоянный справочник.txt"
Аня +дополнительное слово 1 Ася +дополнительное слово 2 Саша +дополнительное слово 3 Вася +дополнительное слово 4 Петя.chm +дополнительное слово 5 Ваня +дополнительное слово 6 Инокентий +дополнительное слово 7 Филипп.chm +дополнительное слово 8 Алиса +дополнительное слово 9 Эллис +дополнительное слово 10 Сергей +дополнительное слово 11 Вера +дополнительное слово 12 Марина +дополнительное слово 13 |
------- Отправлено: 18:43, 04-12-2022 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|