Mudar nome do lote CMD. Leia os novos nomes do arquivo de texto

2

Eu tenho um diretório de imagens de produtos que gostaria de renomear para o UPC dos produtos. Eu tenho o mapeamento do nome do arquivo em uma planilha, então posso exportá-lo para CSV ou delimitado por tabulações.

Dado filenames.txt:

CurrentName     NewName
DSCN4033.png    750732000259.png
DSCN4023.png    750732000013.png
DSCN4024.png    750732000020.png
DSCN4022.png    750732000099.png

DSCN4033.png se tornaria 750732000259.png

Se eu estivesse fazendo isso com o Bash, o comando seria

while read old new; do mv "$old" "$new"; done < filenames.txt

Isto é para um projeto no trabalho que deve ser feito com um arquivo de lote do Windows para que meus sucessores não tenham que mexer com o Cygwin.

    
por picobit 23.05.2016 / 01:46

1 resposta

3

Desde que não haja espaços em seus nomes atuais, o seguinte deve funcionar a partir da linha de comando:

for /f "skip=1 tokens=1*" %A in (filenames.txt) do ren "%A" "%B"

As porcentagens devem ser duplicadas se forem colocadas em um arquivo de lote:

@for /f "skip=1 tokens=1*" %%A in (filenames.txt) do ren "%%A" "%%B"

FOR é o comando interno mais complicado disponível para o CMD.EXE. Use help for ou for /? na linha de comando para acessar a documentação.

    
por 23.05.2016 / 14:46