Пакетный файл необходим для сравнения двух файлов - PullRequest
0 голосов
/ 28 июля 2011

Это мое требование в командном файле Windows. Я попробовал следующее

Example:
f1.txt
sam
varun
ramesh
babu

f2.txt
babu
sam

Мне нужен вывод

varun
ramesh

Программа

@echo on
SETLOCAL EnableDelayedExpansion
for /F "tokens=* delims=." %%a in (f1.txt) do (
    call :myInnerLoop "%%a"
)

echo out of inner loop
)
goto :eof


:myInnerLoop
for /F "tokens=* delims=." %%b in (f2.txt) do (
    if "%~1"=="%%b" (
    echo inside inner loop
        goto :next
    ) else ( 
        echo %%a >> "E:\test\diff.txt"
    )
:next
goto :eof

Но это не работает, пожалуйста, помогите мне.

Даже я пытался использовать утилиту сравнения с http://gnuwin32.sourceforge.net/packages/diffutils.htm без помощи.

Ответы [ 2 ]

1 голос
/ 28 июля 2011

Ваш код почти правильный, но у вас есть некоторые () неправильно. Попробуйте это:

@echo off
del d:\test\windows\comp\diff.txt
SETLOCAL EnableDelayedExpansion
for /F "tokens=* delims=." %%a in (f1.txt) do (
    echo %%a
    call :myInnerLoop "%%a"
)

echo out of inner loop
goto :eof

:myInnerLoop
for /F "tokens=* delims=." %%b in (f2.txt) do (
    echo "x: " %~1
    echo "y: " %%b
    if "%~1"=="%%b" (
        echo next
        goto :next
    )
)
echo "Log " %~1
echo %~1 >> "d:\test\windows\comp\diff.txt"

:next
goto :eof
0 голосов
/ 28 июля 2011

Вы ищете команду comp?

Compares the contents of two files or sets of files.

COMP [data1] [data2] [/D] [/A] [/L] [/N=number] [/C] [/OFF[LINE]]

  data1      Specifies location and name(s) of first file(s) to compare.
  data2      Specifies location and name(s) of second files to compare.
  /D         Displays differences in decimal format.
  /A         Displays differences in ASCII characters.
  /L         Displays line numbers for differences.
  /N=number  Compares only the first specified number of lines in each file.
  /C         Disregards case of ASCII letters when comparing files.
  /OFF[LINE] Do not skip files with offline attribute set.

To compare sets of files, use wildcards in data1 and data2 parameters.
...