perry56
Goto Top

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

Content-Key: 145318

Url: https://administrator.de/contentid/145318

Printed on: April 26, 2024 at 16:04 o'clock

Member: bastla
bastla Jun 21, 2010 at 21:01:29 (UTC)
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
Member: perry56
perry56 Jun 22, 2010 at 17:45:59 (UTC)
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 ?