Batch rename usando PowerShell
function nomes($id=1, $diretorio=$pwd) { $arquivos = @(Get-ChildItem $diretorio | Where-Object {!$_.PsIsContainer}) $num_arquivos = $arquivos.Count $casas = $num_arquivos.ToString().Length if ($num_arquivos -eq 0) {Throw "Sem arquivos para renomear."} if ($id -ne 1) { $casas_tmp = ($id + $num_arquivos).ToString().Length if ($casas_tmp -ne $casas) {$casas = $casas_tmp} } $arquivos | ForEach-Object { $novo_nome = ($id++).ToString().PadLeft($casas) -replace ' ', '0' $novo_destino = Join-Path -Path $_.DirectoryName -ChildPath ($novo_nome + $_.extension.ToLower()) Write-Host $_.FullName `> $novo_destino Move-Item -LiteralPath $_.FullName -Destination $novo_destino } }
Por exemplo,
nomes 3000
renomeará os arquivos da pasta atual iniciando no número 3000 e, caso a quantidade de arquivos esteja entre 6999 e 96999 (que fará o número passar a ter cinco algarismos), levará isso em conta e prefixará os nomes com zero corretamente. Idem com quantidades maiores. Sem fornecer parâmetro, inicia em 1. Ao chamá-lo indicando uma pasta, é obrigatório colocar o número inicial: nomes <número> C:\blabla
.
Comentários
Postar um comentário