Следующий пакетный файл (назовем его replac.bat
) работает только в том случае, если текстовый файл не содержит ||
, если переносы строк в стиле DOS / Windows или Unix (CR + LF или LF соответственно), и если кодировка ASCII- / ANSI-текст:
@echo off
setlocal EnableExtensions DisableDelayedExpansion
rem // Define constants here:
set "_FILE=%~1" & rem // (file to process; use first command line argument)
set "_FIND=Number" & rem // (string at beginning of lines to find lines to process)
set "_SRCH=Metal" & rem // (string at end of lines to be replaced)
set "_REPL=Steel" & rem // (string to replace found string at end of lines)
for /F "delims=" %%L in ('findstr /N "^" "%_FILE%"') do (
for /F "tokens=1-2 delims=: " %%I in ("%%L") do (
set "LINE=%%L" & set "ITEM=%%J"
setlocal EnableDelayedExpansion
set "EXCH=!LINE!||" & set "EXCH=!EXCH:%_SRCH%||=%_REPL%||!" & set "EXCH=!EXCH:||=!"
if "!ITEM!"=="%_FIND%" (
echo(!EXCH:*:=!
) else (
echo(!LINE:*:=!
)
endlocal
)
)
endlocal
exit /B
Текстовый файл (допустим, sample.txt
) должен быть задан в качестве аргументов командной строки,как это:
replac.bat "sample.txt"
Чтобы записать вывод в другой файл (предположим, return.txt
), используйте перенаправление, как это:
replac.bat "sample.txt" > "return.txt"