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