Я пытаюсь переименовать некоторые файлы MP4 в зависимости от размера файла mp4 в другом каталоге. Я хочу назвать все файлы с одинаковыми размерами для одного и того же имени. Это означает, что если размер файла исходного файла совпадает с размером файла в каталоге сравнения, исходный файл переименовывается в любое имя для сравниваемого файла. Поскольку оба каталога необходимо читать рекурсивно, я думаю, что было бы проще составить список для сравнения с информацией в нем в 2 столбцах, используя команду DIR /s /b echo %% ~ zs >> filesizelist.txt, давая мне список как

123456789 movie.mp4

987654321 movie2.mp4

Затем передайте все исходные mp4s в пакетный файл и, если %% ~ za совпадет со значением в первом столбце, затем перенесите файл в соответствующее имя файла. Это лучший путь? Я попытался написать сценарий так, чтобы он работал на лету, и это было неактивным и источником моей 3-дневной головной боли (плюс список ссылок редко меняется и, очевидно, легко обновляется). Может кто-нибудь помочь мне с сценарием?

1 ответ1

0

Пожалуйста, смотрите ниже скрипт powershell.

Я проверил это только для текстовых файлов, но он должен работать с любым файлом при условии, что размер / длина файла читаема.

$Source = "C:\Test"
$Comparison = "C:\Test2"

$SourceFiles = Get-ChildItem -File -Path $Source | Select *
$ComparisonFiles = Get-ChildItem -File -Path $Comparison | Select *

Foreach ($File in $SourceFiles){
    Write-Host "Checking for" $File.Name
    Foreach ($CFile in $ComparisonFiles){
        if ($File.length -eq $CFile.length){
            Write-host $File.fullname "Matches `n" $CFile.fullname
            Rename-Item -Path $File.FullName -NewName $CFile.Name -WhatIf
            Write-Host "`n"
        }   
    }
}

Измените пути $ Source и $ Comparison к их соответствующим каталогам, в настоящее время это безопасно для запуска и изначально не вносит никаких изменений. После того, как вы запустили его и остались довольны результатами, вы можете удалить «-Whatif» из функции переименования элемента, и это внесет изменения, указанные при первом запуске.

Это очень быстрый пример, и он не учитывает, как обрабатывать несколько файлов одинакового размера (возможны дубликаты файлов и т.д.), Это только делает родительский каталог, а не рекурсивный.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .