0

Создайте оболочку/пакет для сравнения двух текстовых файлов и просмотрите другую строку, но не учитывайте пробел и вкладку. Я создаю эту летучую мышь, но отображаю все строки, мне нужны строки juste diffrence.создать оболочку/пакетную версию Windows для сравнения двух текстовых файлов?

FC /W /L /UNE /T /C /A try1.txt try2.txt 
if errorlevel 0 if not errorlevel 1 goto egal 
if errorlevel 1 if not errorlevel 2 goto diff 
if errorlevel 2 if not errorlevel 3 goto err 
:egal 
echo:Les fichiers sont egaux 
goto fin 
:diff 
echo:Les fichiers sont differents 
goto fin 
:err 
echo:Une erreur s'est produite 
goto fin 
:fin 
+0

Пожалуйста, отформатируйте свой код как таковой, нажав кнопку «Пример кода» '{}', нажав * Ctrl + K * или просто перед каждой строкой на четыре * пробела *! И прочитайте хотя бы [туровую страницу] (http://stackoverflow.com/tour), чтобы узнать, как работает сайт! – aschipfl

+0

Вы также можете попробовать этот HTA-файл, который позволяет просматривать два файла для сравнения по строкам с автоматической записью, если есть разница между их строками [File2Compare] (http://vb.developpez.com/telecharger/detail/id/2348/File2Compare-Comparaison-de-deux-Fichiers-ligne-par-ligne) – Hackoo

ответ

0

Простейшие и быстрый метод использует findstr команды будет сравнивать и возвращать результат в новый файл.

findstr /v /i /x /g:<source file> <target file> > outputfile 

    /v : Prints only lines that do not contain a match. 
    /i : Specifies that the search is not to be case-sensitive. 
    /x : Prints lines that match exactly. 
    /g: file : Gets search strings from the specified file 
@echo off 
Set "File1=File1.txt" 
Set "File2=File2.txt" 
Set "Log=CompareResult.txt" 
findstr /vixg:%File1% %File2% >%Log% 
Start "" %Log% 
+0

Мне нужна спецификация, не требуется пространство и вкладка! –

0
if errorlevel 2 if not errorlevel 3 goto err 
if errorlevel 1 if not errorlevel 2 goto diff 
:egal 

errorlevel должны быть испытаны в обратном порядке, как это интерпретируется как «если Равен п или больше, чем п»

Следовательно, если код ошибки 0 «всегда идут» (существуют эзотерические обстоятельства, при которых уровень ошибок может быть установлен отрицательным)

если 2 или более ... ошибка в противном случае, если 1 или более ... разные oth так же.

+0

В общем, это правда, но есть и условия 'if NOT errorlevel', поэтому порядок на самом деле не имеет значения ... – aschipfl

+0

@aschipfl: Абсолютно верно, на втором взгляде. Строка с помощью 'not' делает то, что может быть сделано просто очень сложно. Кажется, что ОП отказался от вопроса. Похоже, что требуется отчет о различиях, но без примера того, что должен показать этот отчет, мы предполагаем. Обработка 'errorlevel' должна быть прекрасной как есть, даже если она слишком сложна. – Magoo

Смежные вопросы