4

У меня есть смешанная музыкальная библиотека с файлами «mp3» и «m4a». Многие из музыкальных каталогов и отдельных подкаталогов альбомов на самом деле включают в себя то, что кажется дублирующим файлы музыкальных песен, отличающиеся только расширением файлов mp3 и m4a.

Для тех каталогов, которые содержат одинаковые песни с обоими расширениями, как я могу использовать Windows 7 и / или команду пакетного файла для поиска по всему моему музыкальному каталогу (и соответствующим подкаталогам) и удалить только те файлы m4a, где существует один и тот же файл песни в формате mp3 в той же папке музыкальной библиотеки, а?

Моя музыкальная библиотека содержит около 75 000 песен, если я игнорирую дубликаты файлов m4a одной и той же песни, которые могут существовать в одной и той же музыкальной папке (папках) разных альбомов.

Однако прямо сейчас, безотносительно к конкретным типам расширений файлов, в моем каталоге, по-видимому, содержится более 100 000 песен (где, очевидно, 25 000 из этих песен являются дубликатами, составляющими эти вышеупомянутые форматы файлов тех же песен, которые сосуществуют в их соответствующих папка музыкального альбома и / или музыкальный подкаталог (-и).

Какую операцию или команду я могу использовать для безопасного сканирования моей музыкальной библиотеки и удаления посторонних файлов песен «m4a», где предпочтительные файлы «mp3» уже существуют?...В то время как сохраняя те файлы m4a, где НЕТ таких же файлов mp3 песни уже существуют? Мне также нужны пошаговые инструкции по настройке и запуску любых пакетных файлов, которые достигают поставленной цели. Большое спасибо, ребята!

4 ответа4

4

Вот скрипт (он же «пакетный файл»), который сделает это за вас, если вы не хотите загружать программу откуда-то:

@echo off
setlocal enabledelayedexpansion
for /r %%F in (*.m4a) do (
    set mp3name=%%~dpnF.mp3
    if exist !mp3name! (
        fc/b %%F !mp3name! > nul
        if errorlevel 1 (
            echo Warning: %%F and !mp3name! both exist but are not identical.
        ) else (
            echo DEL %%F
        )
    )
)

Интерпретация:

  • for %%letter in (wildcard) do some_command сканирует текущий каталог на наличие файлов, соответствующих подстановочному знаку, и выполняет команду с переменной, идентифицируемой letter задано имя файла.
  • for /r %%letter in ... такая же, но рекурсивная.
  • () Позволяет вам указать блок команд вместо одной.
  • Как указано выше, %%F - это имя файла M4A, который был найден.
  • %%~dpnF - это буква диска, путь и (базовое) имя части %%F –– т. е. все, кроме расширения.  К этому мы добавляем расширение .mp3 ; то есть имя файла совпадает с %%F за исключением того, что имеет расширение .mp3 .  Присвойте это имя переменной mp3name .
  • Если этот файл существует, выполните следующие шесть строк.  (Обратите внимание, что мы снова используем () чтобы указать блок команд.)
  • fc/b %%F !mp3name! > nul - fc е Ile гр ompare.  fc любит сравнивать текстовые файлы, так что мы говорим , fc/b сделать б муей сравнения.  Так что fc/b %%F !mp3name! сравнивает два файла.  > nul означает, что результаты сравнения не отображаются на экране; мы только хотим, чтобы скрипт знал результат сравнения.
  • if errorlevel 1 означает, что следует выполнять следующие команды только в том случае, если непосредственно предшествующая команда «не выполнена».  В случае fc «сбой» означает, что файлы не были идентичны, поэтому у нас есть скрипт, сообщающий вам, что Hey_Jude.mp3 и Hey_Jude.m4a существуют, но не идентичны.
  • Наконец, DEL %%F означает удалить файл.  (echo DEL %%F означает отображать команду удаления, но не выполнять ее.)

Настроить:

  • В проводнике Windows перейдите в корневой каталог вашей музыкальной директории, создайте новый текстовый файл и присвойте ему имя.
  • Дважды щелкните по нему, чтобы открыть (отредактировать) его в блокноте. Скопируйте и вставьте вышеуказанный скрипт.  Сохранить и выйти.
  • Вернувшись в Windows Explorer, переименуйте текстовый файл (.txt), чтобы иметь расширение .bat .  Игнорировать предупреждение; нажмите «Да».
  • Запустите командную строку. cd в каталог выше.  Введите имя файла сценария (пакетного) (вы можете ввести расширение .bat , но вам, вероятно, не нужно).  Убедитесь, что список команд DEL он сообщает, выглядит разумно.  Если это так,
  • Вернитесь в проводник Windows, щелкните правой кнопкой мыши файл .bat и выберите «Изменить».
  • В Блокноте измените echo DEL на DEL .  Сохранить и выйти.
  • Вернувшись в командную строку, снова введите команду.
2

У меня была похожая ситуация, когда мне нужно было удалить файл .tif, когда PDF-файл с тем же именем доступен. Вот 5-строчный код командного файла.

   rem A simpler solution to traverse sub-folders with a 
       root folder provided and remove files with the same 
       name but different extension.

    @echo on
    for /R <root-folder> %%I in (*.tif) do (
        @echo checking 
         if exist %%~dI%%~pI%%~nI.PDF del %%I
      )
    pause

Поместите этот код в командный файл и укажите корневую папку. Пакетный процесс рассмотрит все файлы и подпапки и удалит все tif-файлы.

2

о, у меня была похожая проблема! Моя большая музыкальная коллекция состоит из файлов разных типов - mp3, m4a, flac. Было трудно найти одну и ту же песню в mp3 и flac с обычными дублирующими поисками - они просто вычисляют хэши файлов и сравнивают их. Конечно, разные файлы имеют разные хэши, но это одна и та же песня! Наконец, я использовал программу Audio Comparer . Он сравнивает аудио файлы по их звуку. Однако Audio Comparer не идеален - он висит на моей коллекции из 80 000 песен, поэтому мне пришлось разделить мою коллекцию на две части, чтобы заставить ее работать.

1

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

Я предпочитаю делать это вручную, используя бесплатную программу « Все », индексатор файлов, который использует MFT вашей системы:

  1. Поместите это в поле поиска:

    * .Mp3 | * .m4a

  2. Возможно, вы захотите взглянуть на документацию по ограничению поисков местоположением

  3. Список результатов будет содержать все ваши песни mp3 и m4a в алфавитном порядке, поэтому каждый раз, когда вы видите песню дважды, вы можете безопасно выделить и удалить файлы m4a самостоятельно.

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

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