Используя чистую партию:
@echo off
setlocal disableDelayeExpansion
set "input=wo.txt2"
set "output=wo.txt"
>"%output%" (
for /f "delims=" %%A in ('findstr /n "^" "%input%"') do (
set "ln=%%A"
setlocal enableDelayedExpansion
set "ln=!ln:*:=!"
if defined ln set "ln=!ln:*WORK=WORK!"
(echo(!ln!)
endlocal
)
)
Обратите внимание, что при поиске WORK регистр не учитывается.
FINDSTR используется для добавления к каждой строке префикса с номером строки, за которым следует двоеточие, чтобы сохранить пустые строки.
Задержка расширения включается и выключается в цикле, чтобы сохранить любой !
это может существовать в исходном файле.
Гораздо более простым решением является использование моей утилиты обработки текста JREPL.BAT regex - утилиты, основанной исключительно на сценариях (гибридный JScript/batch), которая работает на любом компьютере Windows начиная с XP и далее.
Из командной строки:
jrepl "^.*WORK" "WORK" /f "wo.txt2" /o "wo.txt"
Вы должны использовать CALL JREPL, если вы используете команду в пакетном скрипте.