Directory diff com saída de arquivo de texto

2

Parece que não consegui salvar os scripts que usei para converter alguns repositórios do Subversion para os do Mercurial, mais especificamente os filemaps.

Como posso obter diffs entre dois diretórios (diretórios, arquivos, etc. adicionados / removidos) com os resultados fornecidos em um arquivo de texto?

    
por Isxek 31.08.2012 / 03:46

1 resposta

3

Usando uma ferramenta de comparação completa como diffmerge ou kdiff3 (ambos gratuitos), você pode facilmente verificar as diferenças, comparando os arquivos de saída do seguinte arquivo em lotes. Como é, você precisa fornecer os dois diretórios como argumentos, mas você também pode configurá-los diretamente no SET dir... lines - por exemplo, SET dir1=c:\svn e SET dir2=c:\hg . O script remove o prefixo do caminho dos nomes de arquivos que, de outro modo, seriam diferentes em todas as linhas.

@ECHO OFF
SetLocal EnableDelayedExpansion
SET dir1=%1
SET dir2=%2
ECHO. 2>dir1.txt
ECHO. 2>dir2.txt
FOR /f "tokens=*" %%F IN ('DIR /s /b /o:n %dir1%') DO ( 
    SET tmp=%%F
    ECHO !tmp:%dir1%\=! >> dir1.txt
)
FOR /f "tokens=*" %%F IN ('DIR /s /b /o:n %dir2%') DO ( 
    SET tmp=%%F
    ECHO !tmp:%dir2%\=! >> dir2.txt
)
EndLocal

Em seguida, basta diferenciar os dois arquivos de saída dir1.txt e dir2.txt :

kdiff3 dir1.txt dir2.txt
    
por 31.08.2012 / 18:23