.bat - Renomear Regex?

0

Não consigo entender exatamente como usamos reges em arquivos em lote.

Simplesmente preciso substituir vm_[^_]*_ por nada em APENAS .txt arquivos em subpastas de digamos C: / ProjectFiles /

Os nomes dos arquivos se parecem com: vm_dsr_ads_fire.txt e vm_m1911_idle.txt

Eu preciso que eles acabem com os nomes dos arquivos:
ads_fire.txt e idle.txt

Como faço isso?

    
por user657868 05.11.2016 / 11:59

1 resposta

0

Ao ler o help for e o exercício?

Vamos ficar sérios, você não precisa de um regex aqui (em caso afirmativo, então seria melhor você usar vbscript ou Powershell)

Esse lote gera um DoRename.cmd que você pode revisar e executar depois. CHange Basefld para ajustar seu env.

@Echo off
Set Basefld=Q:\Test
Pushd %Basefld% ||(Echo can't cd to %Basefld%&Pause&Exit /B 1)
> DoRename.cmd (
For /F "Delims=" %%A in ('Dir /B/S "vm_*.txt"'
  ) DO For /F "tokens=1,2* Delims=_" %%B in ('Echo:%%~nxA'
    ) Do Echo Ren "%%~A" "%%D"
)
start "" Notepad.exe DoRename.cmd

Esse segundo lote não possui cintos de segurança desnecessários e renomeia imediatamente os arquivos nos diretórios e subdiretórios atuais.

@Echo off
For /F "Delims=" %%A in ('Dir /B/S "vm_*.txt"'
  ) DO For /F "tokens=1,2* Delims=_" %%B in ('Echo:%%~nxA'
    ) Do Ren "%%~A" "%%D"

O primeiro para anda a árvore para arquivos de fhe, o segundo analisa o nome do arquivo e a extensão. delims = _ divide o nome em tokens. token1 aka %% B sendo ´vm´ token2 %% C o texto entre os dois primeiros sublinhados e token3 * %% D o resto do nome incluindo o .ext.

    
por 05.11.2016 / 12:22