2

Похоже, мне не удалось сохранить сценарии, которые я использовал для преобразования некоторых репозиториев Subversion в Mercurial, в частности, файловые карты.

Как я могу получить различия между двумя каталогами (добавленные / удаленные каталоги, файлы и т.д.) С результатами, представленными в текстовом файле?

1 ответ1

3

Используя полноценный инструмент сравнения, такой как diffmerge или kdiff3 (оба бесплатны), вы можете легко проверить различия, сравнив выходные файлы следующего пакетного файла. На самом деле вам нужно предоставить две директории в качестве аргументов, но вы также можете установить их непосредственно в строках SET dir... - например, SET dir1=c:\svn и SET dir2=c:\hg . Скрипт удаляет префикс пути из имен файлов, которые в противном случае отличались бы по всем строкам.

@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

Затем просто введите два выходных файла:dir1.txt и dir2.txt:

kdiff3 dir1.txt dir2.txt

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .