Como renomear arquivos em lote com um contador?

Como renomear arquivos em lote com um contador?

Tenho 14.000 fotos classificadas em arquivos por ano e mês, mas tiradas com várias câmeras. Quero que o nome do arquivo reflita a data em que a foto foi tirada.

Por exemplo, todas as fotos tiradas em 16 de outubro de 1998 estão em uma pasta chamada 1998\10 October\19981016.

Quero que todas as fotos sejam nomeadas 19981016_0001 19981016_0002 etc.

Posso chegar ao ponto em que lista a pasta que desejo alterar, mas não consigo alterá-la. Todas as minhas fotos são .jpg.

Criei um arquivo temporário de cópias, caso eu estragasse tudo. Comecei digitando:

cd "C:\Documents and Settings\Brooke LastName\Desktop\Temp" 

depois de carregar meu arquivo com sucesso, usei uma fórmula que encontrei neste fórum.

ls *jpg | Foreach {$i=1} {Rename-Item _ -NewName ("$($.19981016){0:00000000#} .jpg" -f $i++) -whatif}

O erro que recebi disse

Unexpected token ' .19981016' in expression or statement.

At line:1 char:12 + $.19981016 <<<<

O erro se repetiu várias vezes

Encontrei várias fórmulas na web, mas a maioria criou arquivos que seriam numerados entre parênteses, por exemplo férias (1).jpg Quero um contador de quatro dígitos após um sublinhado no final da minha data. ou seja, 19981016_0001

Responder1

Acho que você modificou a fórmula e cometeu pelo menos dois erros:

  • Rename-Item $_-> caso contrário, o PowerShell tentará renomear o arquivo chamado "_"
  • "$($_.Directory.Name)_{0:D9}.jpg" -f $i++- você precisa pegar o nome do diretório do objeto atual e para formatar - é mais fácil usar o formato D#, mais fácil contar quantos dígitos você obtém no final...

informação relacionada