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.JPG
para 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".