Usando lote puro:
@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
)
)
Observe que a pesquisa por WORK não faz distinção entre maiúsculas e minúsculas.
O FINDSTR é usado para prefixar cada linha com o número da linha seguido por dois pontos, de modo a preservar linhas em branco.
A expansão atrasada é ativada e desativada dentro do loop para preservar qualquer !
que possa existir no arquivo de origem.
Uma solução muito mais simples é usar meu utilitário de processamento de texto regex JREPL.BAT - um utilitário puro baseado em script (híbrido JScript / batch) que é executado nativamente em qualquer máquina Windows do XP em diante.
Na linha de comando:
jrepl "^.*WORK" "WORK" /f "wo.txt2" /o "wo.txt"
Você deve usar o CALL JREPL se usar o comando em um script em lote.