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 ??
)
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
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 ??
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
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
2 Kommentare
Neuester Kommentar
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
oder gleich die direkte Variante
(beides mit dem zusaätzlichen Vorteil, auch innerhalb einer "
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 "
Grüße
bastla
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
fc a.txt b.txt >nul || echo verschieden
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