sexta-feira, 16 de agosto de 2013

Batch rename usando PowerShell (atualização)

[Atualização - 22/05/2014] Nova versão muito mais legível aqui.

Post original: Batch rename usando PowerShell

Existe um problema no script. Arquivos com [ ou ] no nome falharão e não serão renomeados. Bug do cmdlet "Rename-Item", que não possui uma opção "-LiteralPath" para indicar que não deve tentar expandir caracteres coringas.

Report no Microsoft Connect:
http://connect.microsoft.com/PowerShell/feedback/details/277707/

Por favor, Microsoft, isso era para ter sido corrigido a tempo do PowerShell 2.0. Tomem um pouco mais de café aí.

Nos resta abusar de "Move-Item", com um auxílio de "Join-Path".

Set-Location D:\Downloads
Clear-Host

function nomes($directory=$pwd)
{
$files = @( Get-ChildItem $directory | ? {!$_.PsIsContainer} )
$id = 1
$files | % { Move-Item -LiteralPath $_.FullName -Destination $(Join-Path -Path $_.DirectoryName -ChildPath (((($id++).tostring()).padleft(($files.count.tostring()).length) -replace ' ','0') + $_.extension.tolower() )) }

Leve cheiro de gambiarra, mas funciona.

Nenhum comentário:

Postar um comentário