Renomeia recursivamente arquivos .foo com base no nome do arquivo .bar anexo em várias pastas no Windows 7?

2

Acabei de criar hashes SHA1 para cada álbum da minha coleção de MP3 usando o Corz Checksum. Deixou um arquivo .hash em cada pasta, conforme desejado. (Cada pasta é um álbum.)

No entanto, os arquivos hash que ele gerou têm o nome da pasta, por exemplo

The Beatles - 1966 - Revolver.hash

Gostaria de renomear automaticamente todos esses arquivos .hash para corresponder ao nome do arquivo de lista de reprodução .m3u que também contém todas as pastas. Por exemplo, a presença de

00 - Revolver.m3u

deve fazer com que o arquivo hash seja renomeado para

00 - Revolver.hash

Alguém sabe de uma maneira de fazer isso com uma linha de comando? Eu estou esperando encontrar algo semelhante a isto: Qual comando eu posso usar para recursivamente renomear ou mover um arquivo no Windows?

    
por user80233 08.05.2011 / 00:00

1 resposta

1

Você pode fazer isso com o PowerShell, se estiver confortável com isso.

function Rename-HashFiles ([string]$path)
{
    [System.IO.FileInfo[]]$hashFiles = Get-ChildItem -Path $path -Force -Include "*.hash" -Recurse
    foreach($hashFile in $hashFiles)
    {
        [string]$newFileName = [string]::Empty;
        Get-ChildItem -Path ($hashFile.DirectoryName) -Filter "*.m3u" | % { $newFileName = [System.IO.Path]::GetFileNameWithoutExtension($_.Name) }    
        $newFileName += ([System.IO.Path]::GetExtension($hashFile.Name))
        Rename-Item -Path $hashFile.FullName -NewName $newFileName
    }

}

Rename-HashFiles "C:\My_Music_Folder"
    
por 06.11.2011 / 04:44