perry56

Dateien vergleichen per BATCH mit dos-FC.EXE

Guten Tag an Alle,

schön mal wieder hier zu sein. Frage vorweg an den ADMIN: Habt Ihr alte User gelöscht ? Schade wäre es!
Na egal ...

Ich möchte zwei Dateien mit FC.EXE vergleichen. Dazu habe ein BATCH erstellt. Da dieses BATCH sehr
umfangreich ist, habe ich nur einen kleinen Auszug beschrieben

Vorraussetzung ist (ich habe mich persönlich davon überzeugt): die Dateien a.txt und b.txt sind unterschiedlich

fc a.txt b.txt >nul
echo %ERRORLEVEL%
pause

Gebe ich diesen Zweizeiler in dem cmd-Fenster ein, so bekomme ich als ERRORLEVEL "1".
Das wäre richtig.

Lasse ich diese beiden Zeilen in meinem BATCH laufen, so bekomme ich als ERRORLEVEL "0".

Es sei noch folgendes erwähnt (vielleicht liegt es daran), diese drei Zeilen werden
durch einen CALL in meinem BATCH aufgerufen, also so:

starten der CMD-Datei mit schalter

...
if (%1)==(1) call top1
...
goto :eof

:top1
...
ren ...
copy ...
call vergleich
...
goto :eof

:vergleich
fc a.txt b.txt >nul
echo %ERRORLEVEL%
pause
goto :eof


Es ist zwar heute Montag, aber über's Wochenende kann ich nicht so viel vergessen haben. Oder doch ?? face-wink)

Frage was ist falsch?
Beim "googlen" ist mir aufgefallen, das hier mal ein BUG war? Der ERRORLEVEL von fc wurde nicht richtig übergeben !
Ist dieser immernoch vorhanden ? Habe ich was überlesen ?

Vielen Dank für Eure Hilfe
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 145318

Url: https://administrator.de/forum/dateien-vergleichen-per-batch-mit-dos-fc-exe-145318.html

Ausgedruckt am: 29.04.2025 um 12:04 Uhr

bastla
bastla 21.06.2010 um 23:01:29 Uhr
Goto Top
Hallo perry56 und willkommen im Forum!

Abfragen (und darauf wird's ja auch im nicht geposteten Teil Deines Codes hinauslaufen) mit %Errorlevel% vermeide ich grundsätzlich - daher entweder ein
if errorlevel 1 echo verschieden
oder gleich die direkte Variante
fc a.txt b.txt >nul || echo verschieden
(beides mit dem zusaätzlichen Vorteil, auch innerhalb einer "for"-Schleife zu funktionieren).

Abgesehen davon stellt sich noch die Frage, wo in Deinem Script (im aufgerufenen Unterprogramm oder im Hauptprogramm) dann was passieren soll - um einen Errorlevel an das Hauptprogramm zurückzugeben, könntest Du im Unterprogramm "exit /b" verwenden ...

Grüße
bastla
perry56
perry56 22.06.2010 um 19:45:59 Uhr
Goto Top
Hallo bastla,

vielen Dank für Deine Anregungen. Habe ein paar Dinge auch nach Deinen Hinweisen umgestellt.

Woran es letztendlich gelegen hat, kann ich im einzelnen nicht sagen.

Ergebnis ist jedenfalls, nach Umstellung und Neustart des PC ( Neustart -- das scheint es in erster Linie
gewesen zu sein) funkt es einwandfrei. Ja was soll ich sagen, selbst der ERRORLEVEL ist jetzt in Ordnung. face-wink

Nein "Scherz beiseite" - ich habe den ERRORLEVEL in einer Variable zwischengespeichert und arbeite mit dieser
im Programm weiter. Es wird so sein, das der ERRORLEVEL von einer anderen Funktion manipuliert wurde.

Nochmals vielen Dank. Ansonsten kann der Fall als gelöst vermerkt werden

Grüße
perry56

PS: nette Begrüßung danke, aber warum ist mein Nickname nicht mehr vorhanden / ich war vor Monaten
schon öffters bei Euch und hatte regen Kontakt mit BIBER (Gruss an Ihn) / wo ist mein Account geblieben ?