Estou tentando classificar um diretório de arquivos com algumas condições, mas não consigo descobrir isso por toda a vida. Aqui está um pequeno exemplo de alguns nomes de arquivos que devem ser resolvidos (excluídos).
Turok 3 - Shadow of Oblivion (USA).zip
Turok 3 - Shadow of Oblivion (Europe).zip
Duke Nukem - Zero Hour (Europe).zip
Duke Nukem - Zero Hour (USA).zip
Gex 64 - Enter the Gecko (Europe).zip
NBA Jam 2000 (Europe).zip
Estou tentando manter uma edição de cada arquivo, mas há um problema que torna isso difícil. No caso acima, eu gostaria de manter os arquivos "Gex 64" e "NBA Jam" porque eles são os únicos lá. O "Turok" e o "Duke Nukem" têm duas edições cada, EUA e Europa, e aqui quero manter apenas as da Europa.
Não posso fazer isso manualmente porque estamos falando de milhares de arquivos. Existe um software para isso ou a linha de comando é poderosa o suficiente para que um arquivo em lotes faça isso?
windows
duplicate
conditional-statements
Nick Semante
fonte
fonte
(USA)
ou(Europe)
?(USA)
ou(Europe)
. Alguns deles compartilham o mesmo nome, embora sejam direcionados para uma região diferente. Arquivos únicos devem ser mantidos, não importa o que aconteça, mas nomes duplicados devem ser manipulados para que apenas a(Europe)
versão seja preservada. Isso está correto?Respostas:
Script em lote
O script pode manipular várias extensões e usará o diretório atual como padrão se nenhum for especificado no primeiro parâmetro.
Nota Como está, o script apenas lista os arquivos que devem ser excluídos, mas na verdade não os exclui. Quando tiver certeza de que a lista está correta, substitua a
REM del /f "%%~B"
linha na:deleteDuplicates
sub-rotina pordel /f "%%~B"
. Trabalhe primeiro em uma cópia para garantir que não haja problemas.Como funciona
(Europe
por$(
seus nomes.Limitações conhecidas
Something (Whatever).ext
).(
são levados em consideração.$
caractere é reservado para fins de classificação e não deve aparecer nos nomes dos arquivos.fonte