Resposta curta
Assumindo que o diretório de trabalho contenha todos os arquivos para renomear (e somente esses arquivos), aqui está um forro para renomeá-los:
dir . | sort -des | % { if ($_.BaseName % 2 -eq 0 ) { mv $_ $((2 + $_.BaseName).ToString("000000") + $_.Extension) } }
Explicação
-
dir .lista os arquivos no diretório atual (.).diré um alias para Get-ChildItem . -
sort -desclassifica esses arquivos em ordem decrescente (-des) de seu nome.sorté um alias para Sort-Object e-desé a abreviação de-Descending. -
%é um alias para ForEach-Object que executa um script (incluído em chaves ({}) para cada item no pipeline. -
if ($_.BaseName % 2 -eq 0 )é usado para verificar se o nome base contém um número par usando o igualdade (-eq) e módulo (%) operadores. -
mvé um alias para Move-Item , que pode ser usado para renomeie um arquivo. -
$_é o item atual que está em andamento. -
(2 + $_.BaseName)extrai o nome base e adiciona 2. -
.ToString("000000")formata este novo número com zeros à esquerda (supondo que você precise de um total de seis dígitos). -
+ $_.Extensionadiciona o arquivo original extensão ($_.Extensioné o extensão do arquivo atual no pipeline e que inclui o.)
Observação
Esta solução renomearia um arquivo chamado 000998.png para 001000.png (em outras palavras, garante que há 6 dígitos no total).
