corpse2001
Goto Top

Problem mit IF und ERRORLEVEL in einem Batch

Hallo,

ich habe da ein Problem mit einem Batch.
Es sollen 2 Dateien verglichen werden was auch soweit funktioniert.
Sind die Dteien gleich soll ein bestimmtes Programm gestartet werden.
Allerdings habe ich nun das Problem, dass das Programm in jedem Fall gestartet wird auch wenn die Dateien Verschieden sind.

Bis jetzt sie mein Batch so aus:

@echo Ueberpruefung gestartet.
cd\
d:
cd d:\Ordner1
dir /s >d:\inhalt\inhalt2.txt
comp d:\inhalt\inhalt1.txt d:\inhalt\inhalt2.txt n
if errorlevel 0 goto neustart

:neustart
start Programm
exit

Die Datei d:\inhalt\inhalt1.txt ist vorhanden.

Content-Key: 35648

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

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

Member: miniversum
miniversum Jul 09, 2006 at 08:18:11 (UTC)
Goto Top
Versuchs andersrum. Schau ob der Errorlevel 1 ist und wenn nicht dann starte das Programm.
Mit der Abfrage "if erorlevel 1" kontrollierst du ob der Errorlevel mindestens 1 ist.
Daher mein Vorschlag für die letzten Zeilen:

if errorlevel 1 goto neustart
start Programm
:neustart
exit

miniversum
Member: corpse2001
corpse2001 Jul 09, 2006 at 13:54:03 (UTC)
Goto Top
Es funktioniert leider nich, es passiert genau das gleiche wenn ich die "1" nehme.
Member: miniversum
miniversum Jul 09, 2006 at 17:59:48 (UTC)
Goto Top
Sollte aber gehen. Ist ja das selbe Prinzip wie hier auch:
Batch-Datei xcopy Errorlevel

miniversum
Member: Biber
Biber Jul 10, 2006 at 06:38:58 (UTC)
Goto Top
Moin corpse2001,

der Bug ist woanders.
Das "goto neustart" klappt schon.
Aber eine Zeile vorher sollte diese Zeile rein

...
IF Errorlevel 1 goto :eof
:: IF Errorlevel 0 goto Neustart --ist jetzt überflüssig
:: :neustart (Label neustart ist auch überflüssig
Start programm...


Wenn ich es richtig verstanden habe, dass ein Neustart ausgeführt werden soll, wenn KEIN Unterschied vorliegt.

Gruß
Biber
Member: corpse2001
corpse2001 Jul 10, 2006 at 13:31:56 (UTC)
Goto Top
ich werde das jetzt mal testen
Member: Biber
Biber Jul 10, 2006 at 17:29:19 (UTC)
Goto Top
ich werde das jetzt mal testen

...Stunden später....

Na, corpse2001, so sehr verifizieren brauchst Du nun auch nicht.
Wenn der Test beim ersten Mal okay war, brauchst Du nicht die ganze Nacht durch wiederholen... wenn es nicht geklappt hat, bringen 10000 Wiederholungen nach meinen Erfahrungen auch nichts mehr....
Member: corpse2001
corpse2001 Jul 10, 2006 at 21:04:23 (UTC)
Goto Top
wurde von etwas anderm aufgehalten.
aber das funktioniert leider auch nicht.
Kann es sein das die Nummer vom ERRORLEVEL falsch ist?
Ist es möglich die irgentwie ausgeben zu lassen?
Member: Biber
Biber Jul 11, 2006 at 07:56:49 (UTC)
Goto Top
...Ausgeben kannst Du den Errorlevel jederzeit so:

...
echo Errorlevel ist %ErrorLevel%
:: -->hier ggf noch ein "pause"-Befehl
...
Member: corpse2001
corpse2001 Jul 13, 2006 at 08:04:00 (UTC)
Goto Top
So ich habde das Problem!

Der Fehler lag darin, das das "n" hinter dem comp-Befehl einen falschen Errorlevel verursacht hat.
Dieses wurde nun so gelöst:

echo n | comp *.* *.*