it-swarm.com.de

Wie kann ich zwei Dateien in einer Batch-Datei vergleichen?

Wie kann ich zwei Dateien in einer Batch-Datei vergleichen und eine Aktion basierend darauf ausführen, ob sie übereinstimmen oder nicht? Ich habe versucht, etwas wie:

if file1.txt NEQ file2.txt goto label

es vergleicht jedoch die tatsächliche Zeichenfolge "file1.txt" und nicht die Datei. Ich habe über den Befehl COMP gelesen, aber es scheint nicht zu funktionieren, wenn ich ihn in eine if-Anweisung setze. Weiß jemand, wie man das macht? Tut mir leid, aber ich verwende selten Batch-Dateien und habe wenig Erfahrung damit.

Danke im Voraus.

16
Cory Walker

Ich glaube, Sie können den "FC" -Befehl verwenden und dann den Errorlevel überprüfen. Hier ist ein Code:

@echo off
:main
fc c:\filename r:\filemame > nul
if errorlevel 1 goto error

:next
echo insert next CD
pause
goto main

:error
echo failed check

(Von http://www.computing.net/answers/dos/batch-file-command/15753.html abgerufen.

29
matt_h

Es scheint, als sei das COMP-Programm ziemlich einfach zu bedienen. diese Frage auf Yahoo antwortet.

Wenn Sie comp /? ausführen, wird der Hilfetext für das Programm gedruckt (ebenso wie die Angabe des /?-Arguments mit einem beliebigen Windows-Befehlszeilenprogramm). Dadurch wird derselbe Text ausgegeben, den Sie in der Antwort der oben verlinkten Frage sehen.

Inhalt aus der Yahoo-Antwort:

C:\>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.
3
Noldorin

Ich verwende das folgende Beispiel, um Berichte basierend auf Dateidifferenzen zu erstellen:

set %Batch_Work_Space_Dir%=folder for your batch file and temp resource files
set file_1=name of file
set file_2=name of file

fc %file_1% %file_1%t > %Batch_Work_Space_Dir%\Are_They_Different.txt

powershell -command "(Get-Content %Batch_Work_Space_Dir%\Are_They_Different.txt) | select -skip 1 | Set-Content %Batch_Work_Space_Dir%\Are_They_Different.txt"
set /p Diff_Found=<%Batch_Work_Space_Dir%\Are_They_Different.txt
if %Diff_Found:~0,17%" == "FC: no difference" (
  execute commands
 )
0
David