Batch-Datei vergleichen 0 zurückgeben, wenn die Dateien unterschiedlich sind
Benutze ich ein scheduling-system auf einem Windows 2003-server erfordert die batch-Dateien zum ausführen von verschiedenen Aufträgen. Ich habe einen job, der überprüft, ob eine Datei vorhanden ist, vergleicht, dass die Datei nicht leer ist, dann tut etwas, basierend auf den Ergebnissen. Jedes mal, wenn ich diese ausführe, wird der Fehler-level zurückgegeben wird, ist 0, aber die Dateien sind unterschiedlich. Ich erwarte, um zu sehen, eine 1 zurückgegeben.
Habe ich überprüft, die die Position der Dateien und eine Datei hat Inhalt und die andere ist leer. Ich habe von setup dazu aufgefordert werden, und Sie Sie alle sagen, dass %ERRORLEVEL% ist 0. Ich selbst zog die Dateien in das gleiche Verzeichnis, in der batch-job, aber Sie zeigen immer noch 0.
Code:
echo %ERRORLEVEL%
IF EXIST data.DON (
echo before %ERRORLEVEL%
FC data.DON ZERO.SEQ
echo after %ERRORLEVEL%
IF %ERRORLEVEL% EQU 1 GOTO :PROCESS
)
Die Ausgabe:
16:37:08.12 Thu 03/29/2012
>IF EXIST data.DON (
echo before 0
FC data.DON ZERO.SEQ
echo after 0
IF 0 EQU 1 GOTO :PROCESS
)
before 0
Comparing files data.DON and ZERO.SEQ
***** data.DON
Name|Date|Location
***** ZERO.SEQ
*****
after 0
Habe ich diese genauen code in anderen jobs auf den gleichen server zeigen auf verschiedene Daten-Dateien, und es funktioniert. Irgendwelche Ideen, was ich versuchen kann?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie ersetzen Sie den Wert von %variable% in Klammern, ist der Wert die gleiche variable hatte vor geben Sie die Klammern:
Bisherigen code zeigen immer: Alter Wert
Dieses problem zu lösen, müssen Sie Verzögert die Expansion, das wird, schließen Sie die variable in Ausrufezeichen statt Prozente, und fügen Sie eine
SETLOCAL
Befehl am Anfang:Alle vorherigen Beschreibung gelten auch für die errorlevel-variable, so ersetzen Sie alle
%errorlevel%
durch!errorlevel!
in Ihrem code und fügen Sie den vorherigenSETLOCAL ...
.Den richtigen Weg, um zu überprüfen
errorlevel
ist wie folgt: