Alteração em lote de nomes de arquivos de câmeras para nomes de arquivos detalhados, uma pasta por vez

Alteração em lote de nomes de arquivos de câmeras para nomes de arquivos detalhados, uma pasta por vez

Esta é uma pergunta sobre o Windows PowerShell em execução em um PC desktop com Windows Home de 64 bits.

Estou alterando cerca de cem pastas de nomes de arquivos de fotografias de uma câmera e scanner 005_2.JPGpara um nome de arquivo detalhado como Some Kid Riding a Bicycle.

Estou usando o comando do Windows PowerShell:

Dir | %{Rename-Item $_ -NewName ("Some Kid Riding a Bicycle-{0}.jpg" -f $nr++)}

Isso funciona bem.

Mas quando eu apenas CD\ para a próxima pasta e apenas substituo uma nova string pelo novo assunto na nova pasta, o número de "índice" anexado ao nome do arquivo não é redefinido para "1", mas aumenta para um valor mais alto número - nem mesmo o próximo número após o índice na operação anterior (111 neste caso).

Se o último índice da última operação foi “111” como neste exemplo:

-a----      2/4/2020   8:02 PM         404601 Some Kid Riding a Bicycle-111.jpg

e eu então cd\ para uma pasta contendo 8 arquivos:

Mode                LastWriteTime         Length Name
-a----        1/16/2020  11:39 PM         598118 018_15.JPG

[6 lines omitted here]                                                          

-a----        1/16/2020  11:39 PM         727598 DSC017.jpg

e corra:

> Dir | %{Rename-Item $_ -NewName ("Some Old Guy Riding a Bicycle-{0}.jpg" -f $nr++)}

nessa pasta, o próximo nome de arquivo na sequência de saída é:

-a----   1/16/2020  11:39 PM     598118 Some Old Guy Riding a Bicycle-120.jpg

Parece que o índice avançou no número de arquivos na nova pasta de destino. Estou me perguntando se esses últimos caracteres -f $nr++estão envolvidos, mas não encontrei nenhuma referência a uma string como esta em minha escassa biblioteca.

Como faço para corrigir isso para que comece com -1 (ou algum outro valor predefinido)?

Responder1

$nr é sua variável e você continua iterando seu valor com cada comando. Seu escopo é sua sessão PWSH. enquanto sua sessão estiver aberta, o valor de $nr continuará aumentando, a menos que você atribua um novo valor emitindo a instrução "$nr = 1".

informação relacionada