Elimina arquivos na pasta duplicados em outra árvore de pastas

0

Eu tenho duas pastas. Um deles (Pasta 1) tem fotos e o outro (Pasta 2) tem várias subpastas com imagens. Eu queria encontrar as imagens na pasta 1 que estão duplicadas na pasta 2 ou em qualquer uma de suas subpastas e excluí-las. Mover os não-duplicados para uma nova pasta (Pasta 3) também é uma opção.

Posso fazer isso usando a linha de comando? Eu preciso de um script?

Eu tentei usar o FreeFileSynch, mas não funciona se a pasta 2 tiver subpastas.

Edit: A sugestão de robocopy é interessante, mas embora possa copiar subpastas e seu conteúdo, não creio que possa copiar apenas os arquivos dentro das subpastas.

    
por user1766833 16.03.2017 / 02:06

2 respostas

0

Aqui está o jeito certo de fazer isso, sem os downloads externos. Parece muito no começo, mas uma vez feito, é muito fácil. Ele funciona em todas as versões do Windows de 7 a 95. Para o nosso exemplo, assuma que você está comparando dois diretórios chamados 'A' e 'B'. 1. execute cmd.exe para obter um prompt de comando. (No Windows 7, o powershell não funcionará para isso, FYI.) Então faça de novo, para que você tenha dois deles abertos um ao lado do outro. 2. em cada janela, vá para os diretórios que você deseja comparar. (Usando comandos 'cd'. Se você não se sentir confortável com isso, provavelmente deve usar os utilitários externos, a menos que queira aprender o prompt de comando.) 3. digite 'dir / b > A.txt 'em uma janela e' dir / b > B.txt 'para o outro. Agora você terá dois arquivos de texto que listam o conteúdo de cada diretório. O sinalizador / b significa bare, que separa o diretório listando apenas para nomes de arquivos. 4. mova B.txt para a mesma pasta que A.txt. 5. digite 'fc A.txt B.txt'. O comando 'fc' significa comparação de arquivos. Isso mostrará uma lista das diferenças entre os dois arquivos, com uma linha extra de texto acima e abaixo de cada diferença, para que você saiba onde eles estão. Para mais opções sobre como a saída é formatada, digite 'fc /?' no prompt. Você também pode canalizar as diferenças para outro arquivo usando algo como 'fc A.txt B.txt > differences.txt '. Divirta-se.

    
por 16.03.2017 / 03:29
0

Portanto, a solução que encontrei não é perfeita, mas funciona.

Eu copiei todos os arquivos da Pasta 1 para uma pasta temporária, nivelando a hierarquia com o comando forfiles na linha de comando. Então eu movi os arquivos da pasta temporária para a pasta 2, substituindo alguns deles. Os arquivos que foram movidos foram excluídos porque já estavam na Pasta 1.

1) Na linha de comando: forfiles / p C: \ pasta1 / s / c "cópia cmd / c @path C: \ temporaryfolder"

2) No Windows Explorer: Mova os arquivos da pasta temporária para a pasta 2 e substitua os arquivos existentes. Enquanto os arquivos estiverem selecionados, exclua-os. Os arquivos restantes são os arquivos da pasta 2 que não estavam na pasta 1.

    
por 16.03.2017 / 19:48