1

Тема: CMD/BAT: Скрипт, заменяющий часть содержимого текстового файла

Доброго дня!
Помогите, пожалуйста, составить скрипт, заменяющий определенные словосочетания в определенном файле.
Например:
файл: "файл.тхт"
словосочетание: "не умею работать с cmd"
Нужно, чтобы скрипт заменял "не умею работать с cmd" на "учусь на примерах".

Заранее благодарен.

2

Re: CMD/BAT: Скрипт, заменяющий часть содержимого текстового файла

Оффтоп: когда-то, ну, ооочень давно мне надо было именно батником делать какие-то замены в текстовых файлах - использовал вызов широко известной тогда консольной утилиты GREP...

WBR. Roman

3 (изменено: DnsIs, 2011-11-09 08:18:52)

Re: CMD/BAT: Скрипт, заменяющий часть содержимого текстового файла

В интернете нашел батник:

@echo off
setlocal enabledelayedexpansion
Set infile=test.txt
Set find=не умею работать с cmd
Set replace=учусь на примерах
@echo off
setlocal enabledelayedexpansion
set COUNT=0
for /F "tokens=* delims=," %%n in (!infile!) do (
set LINE=%%n
set TMPR=!LINE:%find%=%replace%!
Echo !TMPR!>>test_bat.txt
)
move test_bat.txt %infile%

Протестил, глючноват код. Требует доработки, навскидку: теряются пустые строки.

Мне больше нравится с использованием сторонних утилит

Можете попробовать gsar (General Search And Replace)

gsar.exe "-sне умею работать с cmd" "-rучусь на примерах" test.txt test_gsar.txt

Мой любимый редактор sed for windows (или MiniSed), тут вводная статья

В простейшем случае строка запуска такая:

sed -e "s/не умею работать с cmd/учусь на примерах/g" test.txt > test_out.txt

Есть еще AWK, будет время поучу.

Нас невозможно сбить с пути, нам пофигу куда идти.

4

Re: CMD/BAT: Скрипт, заменяющий часть содержимого текстового файла

@echo off &setlocal enableextensions

Set "file=файл.тхт"
Set "find=не умею работать с cmd"
Set "repl=учусь на примерах"

move /y "%file%" "%file%.bak"
setlocal disabledelayedexpansion
for /f "tokens=1,* delims=]" %%a in ('type "%file%.bak" ^|find /n /v ""') do (
  set "str=%%b"
  (if defined str (
    call set "str=echo:%%str:%find%=%repl%%%"
    for /f "delims=" %%a in ('echo:"%%str%%"') do %%~a
  ) else echo:) >> "%file%"
)

5 (изменено: Rumata, 2011-11-13 14:42:15)

Re: CMD/BAT: Скрипт, заменяющий часть содержимого текстового файла

!k
Есть подозрение, что возникнут проблемы со строками, содержащими символы имеющими специальное значение, например, кавычки, знаки равенства.

Простите за оффтоп.

DnsIs пишет:

Мой любимый редактор sed for windows (или MiniSed)

DnsIs пишет:

Есть еще AWK, будет время поучу.

Я всегда путаюсь в синтаксисе SED и спотыкаюсь в скриптах, содержащих его вызовы, AWK - на порядок проще и мне несколько удивляет, что Вы не знаете его.

( 2 * b ) || ! ( 2 * b )

6

Re: CMD/BAT: Скрипт, заменяющий часть содержимого текстового файла

Rumata пишет:

AWK - на порядок проще и мне несколько удивляет, что Вы не знаете его.

У меня AWK даже нету, даже не искал ни разу в интернете windows версию. Просто не было надобности, просто знаю, что классная штука, а руки не доходят.

Нас невозможно сбить с пути, нам пофигу куда идти.