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 peloletter
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ávelmp3name
. - 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 dizemosfc/b
para fazer uma comparação binária de b . Entãofc/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 defc
, "falha" significa que os arquivos não eram idênticos, portanto, temos o script informando queHey_Jude.mp3
eHey_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 comandosDEL
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
paraDEL
. Salve e saia. - De volta ao prompt de comando, execute o comando novamente.