Como comparar pastas no Windows 7

4

Existe uma maneira de comparar duas pastas no Windows 7? A comparação deve mostrar as diferenças em termos de pastas de subdiretórios e arquivos de subdiretórios.

    
por happybuddha 25.11.2013 / 21:41

4 respostas

13

Eu não sou um profissional do powershell, mas isso daria a você quais arquivos e pastas existem em uma pasta, mas não em outra.

$test1 = get-childitem -path C:\Users\IrisDaniela\Documents\test1 -recurse
$test2 = get-childitem -path C:\Users\IrisDaniela\Documents\test2 -recurse
compare-object $test2 $test1 | Where {$_.SideIndicator -eq '=>'}

Isso dá:

InputObject                                                 SideIndicator
-----------                                                 -------------
test1a                                                      =>
test.txt                                                    =>

Você também pode deixar de fora a filtragem e obter:

$test1 = get-childitem -path C:\Users\IrisDaniela\Documents\test1 -recurse
$test2 = get-childitem -path C:\Users\IrisDaniela\Documents\test2 -recurse
compare-object $test2 $test1

InputObject                                                 SideIndicator
-----------                                                 -------------
test1a                                                      =>
test.txt                                                    =>
test2b                                                      <=

Não sei se é isso que você está procurando, mas talvez isso te dê um começo:)

Para comparar o uso de conteúdo: compare-object (get-content a.text)(get-content b.txt) e assim por diante

    
por 25.11.2013 / 23:02
2

Existe uma boa ferramenta unix chamada diff, que você pode instalar a partir do cygwin.

Na vitória, há uma ferramenta de gui nomeada além do Compare.

    
por 25.11.2013 / 22:18
1

Você pode criar um arquivo em lote que crie dois arquivos de texto temporários que contenham a estrutura de diretórios e, em seguida, compare esses arquivos temporários com fc .

Algo como (e ajuste para preferências):

dir %1 /s /b /a /ong > temp1.txt
dir %2 /s /b /a /ong > temp2.txt
fc temp1.txt temp2.txt

Os argumentos para o comando dir são: /s recurse em pastas filho /b não mostra detalhes, você pode querer omitir isso talvez /ong sort por nome ascendente, diretórios primeiro

Além disso, lembre-se de ajustar para possíveis espaços nos argumentos

EDIT: como observado nos comentários, teremos que nos livrar do prefixo de diretório do arquivo de texto de lista de arquivos. Isso pode ser feito com um arquivo em lotes, como:

@echo off
setlocal EnableDelayedExpansion

for /F "delims==" %%a in (%1) do @(
    set CURR_LINE=%%a
    @echo !CURR_LINE:~%2!
)

endlocal

usado como unprefix text_file.txt prefix_length . Portanto, por exemplo, unprefix temp1.txt 5 produzirá o conteúdo de temp1.txt sem os 5 primeiros caracteres de cada linha.

    
por 26.11.2013 / 11:23
1

Eu uso o FreeCommander (um clone do Norton Commander) para fazer isso. Ele fornece o recurso "Sincronizar Pastas" que permite comparar duas pastas e, opcionalmente, sincronizá-las. As opções de comparação incluem "Por CRC", "Por data", "Por conteúdo", Sub-pastas e mais mane. É muito poderoso e me ajudou muito a fazer perfeitamente a mesma coisa que você pediu.

Geralmente, o FreeCommander é uma ferramenta muito poderosa. o outro recurso que eu uso frequentemente é pesquisar arquivos e pastas.

    
por 07.12.2013 / 03:42

Tags