Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/314: Рейтинг темы: голосов - 314, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 09.08.2012
Сообщений: 12

Замена одной строки на другую в текстовом файле

09.08.2012, 12:03. Показов 62267. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте, помогите пожалуйста написать батник, я неочень хорошо в них разбираюсь, но юзал поиск, находил несколько схожих тем, но разобраться все равно неполучилось.

Нужно, что бы при нажатии на батник в файле MYFILE.TXT, который состоит из не более чем 100 строк, строка FA_ALERT=1 заменялась на строку FA_ALERT=0, желательно что бы при этом ненужно было указывать номер этой строки.

Заранее спасибо всем откликнувшимся.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.08.2012, 12:03
Ответы с готовыми решениями:

Замена подстроки в текстовом файле на другую строку
Разработайте программу replace.exe, выполняющую замену подстроки в текстовом файле на другую строку, и записывающей результат в выходной...

В текстовом файле заменить все вхождения одной последовательности на другую, результат вывести на экран
В текстовом файле Заменить все вхождения одной последовательности на другую, результат вывести на экран.

Замена строки в текстовом файле
Здравствуйте. Много лазил по форуму, но так и не нашёл нужного мне способа, поэтому решил создать тему конкретно для него. Проблема...

19
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
10.08.2012, 00:43
Bash
1
2
3
4
5
6
7
8
9
10
11
@echo off
set verfile=MYFILE.TXT
set tmpfile=MYFILE.tmp
set seek=FA_ALERT
if exist %tmpfile% del /q %tmpfile%
for /f "delims=" %%a in (%verfile%) do (
  (echo %%a)|>nul find /i "%seek%="&&((echo %seek%=0)>>%tmpfile%)
  (echo %%a)|>nul find /i "%seek%="||(echo %%a)>>%tmpfile%
)
copy /y %tmpfile% %verfile% >nul
del /f /q %tmpfile% >nul
4
0 / 0 / 0
Регистрация: 09.08.2012
Сообщений: 12
10.08.2012, 07:00  [ТС]
Спасибо огромное, работает)))
0
 Аватар для gurlov
3 / 3 / 3
Регистрация: 27.05.2014
Сообщений: 373
11.07.2016, 18:31
А можно добавить одно условие: Строка должна именно начинаться с FA_ALERT=. Как это можно реализовать?

И есть какие-либо варианты более быстрого решения, а то текстовый файл в 0,5МБ на моём компе проверяется более 1,5 минуты?

Спасибо.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
13.07.2016, 14:24
Регулярным выражением в AkelPad / Notepad++

^FA_ALERT=1
на
FA_ALERT=0
1
 Аватар для volodin661
6627 / 2258 / 346
Регистрация: 10.12.2013
Сообщений: 7,811
13.07.2016, 21:36
можно присовокупить, что использование vim
в качестве редактора позволяет выполнить данную подстановку из
ком. строки
Windows Batch file
1
vim -c "s/^FA_ALERT=1/FA_ALERT=0/|wq" MYFILE.TXT
0
 Аватар для gurlov
3 / 3 / 3
Регистрация: 27.05.2014
Сообщений: 373
14.07.2016, 09:21
Использовать текстовые редакторы не могу, так как они не установлены на удалённых компьютерах. Зато нашёл на просторах интернета .VBS который для INI-файлов в заданной секции изменяет значение заданного ключа (а мне именно для этого и надо было) Данный файл отрабатывает почти мгновенно. VBS быстрее чем BAT?
P.S. если надо, данный VBS могу здесь выложить.
0
0 / 0 / 0
Регистрация: 15.08.2016
Сообщений: 5
15.08.2016, 10:26
Добрый день.
Применил ваш код всё хорошо за одним недостатком для меня.
В моем файле кот я редактирую имеются пустые строки и скрипт их удаляет.
Возможно ли дописать код чтобы он оставлял пустые строки не тронутыми?
Фай примера приложил, меняю в нем последюю строку имя DLL.
Зарание спасибо.
Вложения
Тип файла: txt Пример.txt (799 байт, 77 просмотров)
0
 Аватар для volodin661
6627 / 2258 / 346
Регистрация: 10.12.2013
Сообщений: 7,811
15.08.2016, 12:38
Exsisto,
eсли у тебя последний релиз Windows 10, то при подключённом компоненте bash
достаточно одной короткой строчки
Bash
1
sed  -i -r 's/^(.+\\).+$/\1новое-имя.dll/' Пример.txt
для всех остальных Windows ( XP и старше), можно установить Cygwin, расширив тем самым арсенал cmd до
возможностей Linux-утилит и применить ту же строчку.
1
0 / 0 / 0
Регистрация: 15.08.2016
Сообщений: 5
15.08.2016, 12:57
volodin661,
Win 7, установка ПО не приемлима.
0
 Аватар для volodin661
6627 / 2258 / 346
Регистрация: 10.12.2013
Сообщений: 7,811
15.08.2016, 13:35
да? а какие задачи можно решать в ОС без установленного ПО?
0
0 / 0 / 0
Регистрация: 15.08.2016
Сообщений: 5
15.08.2016, 14:35
volodin661,
Ну в данный момент все работает без установки дополнительного ПО, за исключением нюанса кот я описал выше.
Следовательно зачем что-то устанавливать дополнительно?

Добавлено через 8 минут
volodin661,
Я не разбираюсь в этом поэтому прошу помощи.
Я беру код предоставленный Dragokas, подставляю в него свои данные, в результате получаю почти необходимый результат за одним недостатком (удаляются пустые строки)
И как этого обойти не имею представления за этим и обратился.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
15.08.2016, 14:57
Зачем вас batch в 21 веке и при наличии win 7 в которой есть powershell?
PoSh решает любые вопросы администрирования ОС и обработки текста (или корп. религия этот инструмент тоже запрещает?)
Код запуска oneliner'а на powershell из cmd:
Windows Batch file
1
powershell "'d:\Пример.txt'|%{(cat $_) -replace '^(rsa.library.path=.+\\).+$','$1новое-имя.dll' |out-file $_ -Enc default}"
PS: Не так коротко как через bash утилиты, но зато не нужно придумывать костыли как в cmd.

Для удобства можно вынести переменные из скрипта:
Windows Batch file
1
2
3
4
5
set "file='d:\Пример.txt'"
set "regex='^(rsa.library.path=.+\\).+$'"
set "newname=новое-имя.dll"
powershell "%file%|%%{(cat $_) -replace %regex%,'$1%newname%' |out-file $_ -Enc default}"
pause
4
0 / 0 / 0
Регистрация: 15.08.2016
Сообщений: 5
15.08.2016, 19:58
Garry Galler,
Большое человеческое спасибо добрый человек.
0
Любознательный
 Аватар для YuS_2
7401 / 2247 / 359
Регистрация: 10.03.2016
Сообщений: 5,192
15.08.2016, 21:00
Цитата Сообщение от Exsisto Посмотреть сообщение
беру код предоставленный Dragokas, подставляю в него свои данные, в результате получаю почти необходимый результат за одним недостатком (удаляются пустые строки)
И как этого обойти не имею представления за этим и обратился.
Как сказали выше, есть более подходящие инструменты для редактирования текста (кстати, для которых есть свои топики на форуме).
Но если вдруг, потребуется именно бат-сценарий...
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
@echo off
set "verfile=Пример.txt"
set "tmpfile=MYFILE.tmp"
set "fin=rsa.library.path"
set "rep=C:\\Windows\\System32\\123.dll"
if exist %tmpfile% del /q %tmpfile%
for /f "tokens=1,2* delims=]" %%a in ('type %verfile%^|find /v /n ""') do (
    (echo.%%b)|>nul find /i "%fin%="&&(echo.%fin%=%rep%>>%tmpfile%)
    (echo.%%b)|>nul find /i "%fin%="||(echo.%%b)>>%tmpfile%
)
copy /y %tmpfile% %verfile% >nul
del /f /q %tmpfile% >nul
pause
1
 Аватар для volodin661
6627 / 2258 / 346
Регистрация: 10.12.2013
Сообщений: 7,811
15.08.2016, 23:11
Цитата Сообщение от YuS_2 Посмотреть сообщение
Но если вдруг, потребуется именно бат-сценарий.
вопрос в приоритетах.

если твоя задача быстро, надёжно и с минимальными усилиями решить проблему,
используя потенциал инструментов командной строки - это одно,

если же ты зритель или участник весёлого конкурса "Сделай это в cmd" - другое.

Кстати, вниманию участников конкурса - на больших файлах все эти экзерсисы со вложенными
for для обработки текста часто неработоспособны.
0
0 / 0 / 0
Регистрация: 15.08.2016
Сообщений: 5
16.08.2016, 02:50
volodin661,
Задача минимум действий, двойной клик всё готово "Скопирована dll-ка, изменены три файла", при проблемах с продажей алкоголя по системе ЕГАИС.
Крайне актуальна скорость решения проблем.
0
Любознательный
 Аватар для YuS_2
7401 / 2247 / 359
Регистрация: 10.03.2016
Сообщений: 5,192
16.08.2016, 11:56
Цитата Сообщение от volodin661 Посмотреть сообщение
вопрос в приоритетах.
Вопрос в разделе, где задан вопрос... если есть ошибка с выбором раздела - это одно, если её нет, то к чему Ваши рассуждения?
Неужели Вы считаете, что кроме Вас никто не в состоянии думать и рассуждать?
А проводить "политпропаганду" за выбор чего угодно, но только не cmd, в разделе про cmd, несколько неуместно - Вам так не кажется?
1
27 / 27 / 9
Регистрация: 21.04.2015
Сообщений: 704
05.03.2019, 22:05
Обясните как пользоваться этими бат скриптами, мне нужно одну подстроку в тхт файле заменить на др, где там указывается что на что менять? А то у меня есть прога, в которой 1 из параметров в конфиге крошится при внезапных завершениях процесса, надоело это уже руками править каждый раз.
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
06.03.2019, 13:28
Цитата Сообщение от Ваю Посмотреть сообщение
1 из параметров в конфиге крошится при внезапных завершениях процесса, надоело это уже руками править каждый раз.
Берём, например zabbix_agentd.conf, запускаем PowerShell и выполняем:

PowerShell
1
(gc .\zabbix_agentd.conf) -replace '^Server=192\.168\.0\.100$','Server=10.0.0.100' | sc .\zabbix_agentd.conf
Данный пример найдёт в текстовом файле zabbix_agentd.conf строку "Server=192.0.0.100", заменит её на "Server=10.0.0.100" и сохранит изменение в том же файле.

Но лучше создать отдельную тему (и ещё лучше в Powershell разделе ), где показать конкретный пример текста и точно описать: что именно и на что заменять. Т.к. при поиске и замене текста может возникнуть множество нюансов...
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.03.2019, 13:28
Помогаю со студенческими работами здесь

Замена строки в текстовом файле
Помогите пожалуйста Необходимо написать батник. Находит текст в файле 1.txt. Он может меняться, начало не меняется adress= "далее...

Замена части строки в текстовом файле
Добрый вечер. Необходима помощь в написании bat, который бы заменил: "restore_ps": на "restore_ps": Учитывая что...

Замена слов в одном текстовом файле словами, записанными в другом текстовом файле
Кто-нибудь пожалуйста приведете пример реализации следующей программы имеются два тектовых файла - один с повторяющимися записями типа ...

Замена одной строки на другую
Итак, у меня есть файл Release, содержащий себе строки (много текста!) Origin: ***** Suite: stable Codename: ***** Version:...

Замена строки в текстовом файле при нажатии клавиши
Приветствую всех форумчан. Я здесь впервые, делаю робота, пишу под него программу управления на ВБ 6.0. Столкнулся с проблемой, которую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru