DOS comando para renomear com parte do nome do arquivo original

4

Eu tenho muitos arquivos com nomes como este:
YYY.XXXXXX

e eu preciso escrever um comando batch em DOS para renomear assim:
YYYXXXXXX.ZZZ

YYY e ZZZ são sequências fixas, apenas XXXXXX é variável.

tentou isso sem sucesso:
rename YYY.?????? YYY??????.ZZZ

    
por ciquta 04.03.2013 / 19:39

2 respostas

9

Você pode usar a instrução for para fazer isso, pois dá acesso ao nome do arquivo e à extensão separadamente:

for /f "tokens=1* delims=." %i in ('dir /b yyy.*') do ren "%i.%j" "%i%j.zzz"

Usar tokens=1,2 delims=. faz com que ele divida o valor retornado por dir /b yyy.* nas variáveis . nas variáveis %i e %j , em que %i é o nome do arquivo (ou 'yyy') e %j é a extensão da variável (sem o ponto inicial . ).

Use o comando acima se estiver digitando diretamente no prompt de comando. De um arquivo de lote, você precisa duplicar todos os símbolos % desta forma:

for /f "tokens=1* delims=." %%i in ('dir /b yyy.*') do ren "%%i.%%j" "%%i%%j.zzz"

Certifique-se de executar este comando a partir da pasta onde residem todos os arquivos yyy.xxxxxx .

    
por 04.03.2013 / 20:21
0

Apenas como um ponto, antes de tentar usar ren ou qualquer outro comando, primeiro tente um echo para ver o que seria feito, então em vez de:

for /f "tokens=1* delims=." %i in ('dir /b yyy.*') do ren "%i.%j" "%i%j.zzz"

Primeiro faça (para ver quais comandos seriam executados):

for /f "tokens=1* delims=." %i in ('dir /b yyy.*') do @(echo ren "%i.%j" "%i%j.zzz")

Após a saída mostrar que os comandos são o que você deseja, basta remover o echo .

    
por 03.11.2016 / 13:04

Tags