Removendo arquivos duplicados através de arquivos em lote ou do Windows 7

4

Eu tenho uma biblioteca de músicas combinada com arquivos "mp3" e "m4a". Muitos dos diretórios de música e sub-diretórios de álbuns específicos, na verdade, incluem o que parece duplicar os arquivos de músicas musicais, diferindo apenas pela extensão dos arquivos mp3 e m4a.

Para os diretórios que contêm as mesmas músicas com as duas extensões, como posso usar o Windows 7 e / ou um comando de arquivo em lote para pesquisar em todo o meu diretório de músicas (e respectivos sub-diretórios) e excluir apenas os arquivos m4a? arquivo de música existe no formato de arquivo mp3 na mesma pasta da biblioteca de músicas também?

Minha biblioteca de músicas contém cerca de 75.000 músicas se eu ignorar os arquivos m4a duplicados da mesma música que podem existir nas mesmas pastas de músicas de vários álbuns.

No entanto, no momento, sem considerar tipos específicos de extensões de arquivos, meu diretório parece ter mais de 100.000 músicas (onde obviamente 25.000 dessas músicas são duplicatas que explicam esses formatos de arquivo da mesma (s) música (s) coexistentes sua respectiva pasta de álbuns de música e / ou sub-diretório (s) de música).

Qual operação ou comando eu posso usar para escanear com segurança a minha biblioteca de músicas e remover arquivos estranhos de músicas “m4a” onde os arquivos “mp3” preferidos já existem? ... Enquanto GUARDANDO esses arquivos m4a onde NÃO existem arquivos MP3 de músicas iguais ? Também preciso de instruções passo a passo sobre como configurar e iniciar qualquer arquivo em lote que atinja o objetivo declarado acima. Muito obrigado pessoal!

    
por Steve 21.01.2013 / 14:58

4 respostas

4

Veja um script (também conhecido como "arquivo em lote") que fará isso para você, caso não deseje baixar um programa de algum lugar:

@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
        )
    )
)

Interpretação:

  • for %%letter in (wildcard) do some_command varre o diretório atual para arquivos que correspondem ao curinga e executa o comando com a variável identificada pelo letter definido para o nome do arquivo.
  • for /r %%letter in ... é o mesmo, mas recursivo.
  • () permite especificar um bloco de comandos em vez de apenas um.
  • Como indicado acima, %%F é o nome do arquivo M4A que foi encontrado.
  • %%~dpnF é a letra da unidade, o caminho e as partes do nome (base) %%F –– isto é, todos menos a extensão. Para isso, adicionamos uma extensão .mp3 ; ou seja, um nome de arquivo igual ao %%F , exceto que ele possui uma extensão .mp3 . Atribua este nome à variável mp3name .
  • Se este arquivo existir, faça as próximas seis linhas. (Observe que estamos novamente usando () para especificar um bloco de comandos.)
  • fc/b %%F !mp3name! > nul –– fc é f ile c ompare. fc gosta de comparar arquivos de texto, então dizemos fc/b para fazer uma comparação binária de b . Então fc/b %%F !mp3name! compara os dois arquivos. > nul significa não exibir os resultados da comparação na tela; só queremos que o script saiba o resultado da comparação.
  • if errorlevel 1 significa fazer o (s) seguinte (s) comando (s) apenas se o comando imediatamente anterior “falhou”. No caso de fc , "falha" significa que os arquivos não eram idênticos, portanto, temos o script informando que Hey_Jude.mp3 e Hey_Jude.m4a existem, mas não são idênticos.
  • Finalmente, DEL %%F significa excluir o arquivo. ( echo DEL %%F significa exibir o comando delete, mas não o execute.)

Configuração:

  • No Windows Explorer, vá para a raiz (parte superior) do diretório de músicas, faça um novo arquivo de texto e nomeie-o.
  • Clique duas vezes nele para abri-lo (editá-lo) no Bloco de Notas. Copie e cole o script acima. Salve e saia.
  • De volta ao Windows Explorer, renomeie o arquivo Texto ( .txt ) para ter uma extensão .bat . Ignore o aviso; clique em "Sim".
  • Iniciar um prompt de comando. cd para o diretório acima. Digite o nome do arquivo de script (lote) (você pode digitar a extensão .bat , mas provavelmente não precisa). Verifique se a lista de comandos DEL reporta parece razoável. Se isso acontecer,
  • Volte no Windows Explorer, clique com o botão direito do mouse no arquivo .bat e selecione Editar.
  • No bloco de notas, altere echo DEL para DEL . Salve e saia.
  • De volta ao prompt de comando, execute o comando novamente.
por 22.01.2013 / 01:32
2

ah, eu tive um problema parecido! Minha grande coleção de músicas consiste em diferentes tipos de arquivos - mp3, m4a, flac. Foi difícil encontrar a mesma música em mp3 e flac com os habituais buscadores duplicados - eles apenas calculam hashes de arquivos e os comparam. Claro, arquivos diferentes têm hashes diferentes, mas é a mesma música! Por fim, usei o programa Audio Comparer . Compara os arquivos de áudio pelo som deles. No entanto, o Audio Comparer não é perfeito - ele paira sobre minha coleção de 80.000 músicas, então eu tive que dividir minha coleção em duas partes para que funcionasse.

    
por 25.07.2013 / 16:10
2

Eu tive uma situação semelhante em que precise excluir um arquivo .tif quando um PDF com o mesmo nome está disponível. Aqui está um código de arquivo em lote de 5 linhas.

   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

Coloque este código em um arquivo de lote e forneça a pasta-raiz. O processo em lote examinará todos os arquivos e subpastas e excluirá todos os arquivos tif.

    
por 22.03.2017 / 20:22
1

Se você decidir fazer isso manualmente, existem muitos "finders" de arquivos freeware, mas eles são lentos e difíceis de usar na minha opinião.

Eu prefiro fazê-lo manualmente usando um programa freeware chamado " Everything ", um indexador de arquivos que usa o sistema MFT :

  1. Coloque isso no campo de pesquisa:

    *.mp3|*.m4a

  2. Você pode querer ver a documentação em limitar as pesquisas a um local

  3. A lista de resultados conterá todas as suas músicas mp3 e m4a em ordem alfabética, de modo que, a qualquer momento que você vir uma música duas vezes, você poderá destacar e excluir os arquivos m4a com segurança.

Estou ciente de que esta não é uma solução automatizada, mas eu prefiro fazer as coisas manualmente, então eu posso usar o tempo extra para também remover minha coleção de músicas indesejadas de qualquer maneira.

    
por 21.01.2013 / 15:14