|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Вставить слово между текстом |
|
|
CMD/BAT - [решено] Вставить слово между текстом
|
Пользователь Сообщения: 122 |
Всем доброго дня
Имеется текстовый файл такого порядка: 1=имя 2=имя 3=имя и так далее.. Как вставить слово между - например: 1=слово\имя 2=слово\имя 3=слово\имя То есть нужно вставить одно и тоже слово после = В начало и в конец строки я могу, но как добавить слово между ? Буду благодарен за помощь! |
|
------- Отправлено: 13:33, 22-11-2022 |
Ветеран Сообщения: 2631
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 22:18, 22-11-2022 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать megaloman,
С первого раза заработало! Супер! Все коды с заменой текста перелопатил но все они не подходили в случае с '=' Либо была ошибка либо вообще ничего. Спасибо огромное! пойду дальше ковырять. |
------- Последний раз редактировалось minutka15, 22-11-2022 в 23:14. Причина: трудная задача Отправлено: 22:45, 22-11-2022 | #3 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать У меня есть одна задача с которой мне никак в одиночку не справится.
Не хочу выглядеть как-бы посади его за стол а он и ноги на стол. в общем если есть время и нервы: В этом текстовом файле возможны более 200 имен Есть текстовый файл с примерно вот такой переченью: 1=первое_имя 2=второе_имя 3=третье_имя 4=четвертое_имя 5=пятое_имя ну и т.д тут внизу список, мы сами его составили и он меняться не будет тогда как верхний список будет сгенерирован. Однако получим мы те-же имена с нижнего списка но неизвестно какие и сколько. ниже этого листа те-же имена но с дополнениями. Дополнительные имена мы тоже знаем. 1=первое_имя +дополнительное слово 2=второе_имя +дополнительное слово 3=третье_имя +дополнительное слово 4=четвертое_имя +дополнительное слово 5=пятое_имя +дополнительное слово Так вот, задача такая что-бы в верхний список мы добавили +дополнительным словом из нижнего списка в зависимости какое имя выпало. Как бы нужно просканировать верхний список с нижним и если он найден добавить к нему дополнительное слово. Возможно ли решить такую задачу? |
------- Отправлено: 23:12, 22-11-2022 | #4 |
Ветеран Сообщения: 2631
|
Профиль | Отправить PM | Цитировать |
|
------- Отправлено: 00:03, 23-11-2022 | #5 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Но есть одна загвоздка и вот какая: Дело в том, что генерируемый текст не совпадает с постоянным из-за: 1=первое_имя 2=второе_имя 3=третье_имя Потому, что Х=имя не будет под таким же номером как в постоянном. К примеру постоянный номер у 85= в генерируемом может стать 14= или какой угодно. В общем я удалил в обоих текстах все "1= 2= 3= и тд." и оставил только названия. И вот запуская батник все делается точь в точь как я и хотел! Подводя итоги - Батник нужно переделать с учетом изменений: 1) Подготавливаю постоянный файл без "1= 2= 3=" 2) Запуском скрипта из непостоянного файла нужно удалить все "Х=" и затем скрипт продолжает свою работу. 3) По завершению пронумеровываем обратно как должно быть в окончательном варианте то есть 1= 2= 3= и тд. Третье действие я смогу припаять самостоятельно. Осталось недоделанным 2е действие по удалению 1= 2= 3= из генерируемого.txt (по другому никак нельзя он только так и генерируется) Признаюсь в своей безграмотности, самостоятельно с этой задачей я бы не справился никогда. |
|
------- Отправлено: 01:25, 23-11-2022 | #6 |
Ветеран Сообщения: 2631
|
Профиль | Отправить PM | Цитировать @Echo Off cls Set "FileIn=Z:\Box_In\непостоянный файл.txt" Set "Fsprav=Z:\Box_In\постоянный справочник.txt" >"%FileIn%.tmp" (FOR /F "usebackq tokens=1* delims==" %%i In ("%FileIn%") DO ( <nul Set /P Str=%%i= FindStr /B /I "%%j " "%Fsprav%" ||Echo %%j )) >nul Move /Y "%FileIn%.tmp" "%FileIn%" pause Exit /B Пример файлов
Цитата "непостоянный файл.txt" :
Цитата "постоянный справочник.txt" :
Цитата "непостоянный файл.txt" -преобразованный:
|
|||
------- Последний раз редактировалось megaloman, 23-11-2022 в 11:22. Отправлено: 09:52, 23-11-2022 | #7 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать megaloman,
Отлично! А можно подкорректировать батник таким образом что-бы в последнем действии добавлялось то что я описывал в своем самом первом посту + pdf ? То есть где 1=Алиса +дополнительное слово 9 было 1=мое-слово\Алиса.pdf +дополнительное слово 9 мое-слово будет единым для всех имен. -- Да и вот еще что в завершенном файле в самом начале получаю [AllNames]=ђҐ¦Ё¬ ўлў®¤* Є®¬**¤ ** нЄа** (ECHO) ®вЄ«озҐ*. То есть крякозябры. Дело в том что когда генерируется "непостоянный файл.txt" то в самом верху прописано: [AllNames] а ниже 1=имя 2=имя [AllNames] Должно оставаться нетронутым в самом верху. Решил добавив команду внизу скрипта powershell "Get-ChildItem непостоянный файл.txt | ForEach-Object { $f=$_ | Get-Content -ReadCount 0; $f[0]='[AllNames]'; Set-Content $_.FullName $f }" .. |
------- Последний раз редактировалось minutka15, 23-11-2022 в 17:24. Отправлено: 12:44, 23-11-2022 | #8 |
Ветеран Сообщения: 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) >"%FileIn%.tmp" (FOR /F "usebackq tokens=1* delims==" %%i In ("%FileIn%") DO ( If "%%j"=="" (Echo %%i ) Else ( <nul Set /P Str=%%i=%WordIn% FindStr /B /I "%%j " "%Fsprav%" ||Echo %%j ) )) >nul Move /Y "%FileIn%.tmp" "%FileIn%" pause Exit /B |
------- Отправлено: 17:36, 23-11-2022 | #9 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать megaloman
Все что нужно! Скрипт работает суперски. 140 строк как часики заполнились и везде все как надо ! Вот что значит поддержка мастера. В моем проекте всегда была эта задача как самая трудная и из за этого я всегда откладывал в надежде найти другой способ. Но как оказалось все решил этот скрипт. Без вашей помощи я продолжал бы вынюхивать информацию по различным форумам в надежде найти адекватного специалиста! Огромная вам благодарность за помощь которую вы мне оказали! |
------- Отправлено: 17:53, 23-11-2022 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|