Comando do Windows

1

Precisa encontrar o último sublinhado em um nome de arquivo e remover tudo que o segue (incluindo o último sublinhado).

por exemplo, nome de arquivo:

abc_erf_dsgd_fd12458.txt

resultado esperado:

abc_erf_dsgd.txt

Nota: O não: de sublinhados que aparecem no nome do arquivo é dinâmico e não é fixo na natureza.

Certos arquivos podem ter apenas dois sublinhados, enquanto outros podem ter até 6.
A intenção aqui é descobrir o último sublinhado e omitir tudo que o segue.

De preferência, o script em lotes do Windows, que poderia fazer o truque e não comandos do PowerShell.

    
por UserA 20.06.2017 / 10:08

1 resposta

0

@Echo off
set file=abc_erf_dsgd_fd12458.txt
for %%A in (%file%) do set Ext=%%~xA
set remove=%file%
:loop
if "%remove%" neq "%remove:*_=%" Set "remove=%remove:*_=%"&goto :loop
call set filenew=%%file:_%remove%=%%%Ext%"
set file

Exemplo de saída:

> SU_1220967.cmd
file=abc_erf_dsgd_fd12458.txt
filenew=abc_erf_dsgd.txt"

O lote

  • primeiro obtém a extensão em var Ext
  • cria um var remove contendo o restante do nome do arquivo depois de remover todo o texto até e incluindo o sublinhado em um loop usando a substituição de string.
  • cria o novo nome de arquivo substituindo remove por nada e reaplicando a extensão
por 20.06.2017 / 12:41