Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst BATCH - IF-Abfrage funktioniert nicht

Mitglied: franc

franc (Level 2) - Jetzt verbinden

03.08.2011 um 10:02 Uhr, 11095 Aufrufe, 13 Kommentare

Hallo,

auf einem Vista 64 prof Rechner versuche ich gerade eine simple Batchdatei zu erstellen, aber die Syntax wird mir nicht angenommen:

01.
xcopy C:\test.bat x:\test.bat 
02.
@echo %ERRORLEVEL% 
03.
IF %ERRRLEVEL% == 4 GOTO ERR 
04.
IF %ERRRLEVEL% == 0 GOTO END 
05.
:ERR 
06.
echo ERR 
07.
:END 
08.
echo END
Das Ziel X: ... gibt es nicht, also wird ERRORLEVEL 4 erzeugt. Die Ausgabe ist aber solches:

c:\>xcopy C:\test.bat x:\test.bat
Ungültige Laufwerkangabe
0 Datei(en) kopiert
4
"GOTO" kann syntaktisch an dieser Stelle nicht verarbeitet werden.
c:\>IF == 4 GOTO ERR

Warum geht das GOTO so nicht?
Warum funktioniert das "==" hier denn nicht? Oder auch kein GTR geht.

Was mache ich falsch?

Danke.
Mitglied: Skyemugen
03.08.2011 um 10:05 Uhr
Aloha

... was bitte ist %ERRRLEVEL%?

greetz André
Bitte warten ..
Mitglied: bastla
03.08.2011 um 10:54 Uhr
@Skyemugen
... was bitte ist %ERRRLEVEL%?
Könnte etwa Sinnvolles sein, wenn davor ein
set %ERRRLEVEL%=%ERRORLEVEL%
verwendet wird (konserviert den Errorlevel des "xcopy") ...

Ansonsten würde ich aber auch eher
xcopy C:\test.bat x:\test.bat && goto :END
verwenden und danach, wenn's denn überhaupt erforderlich ist, den Errorlevel - und dann aber per
01.
if errorlevel 4 goto :ERR 
02.
if errorlevel 3 ... 
03.
...
- auswerten.

Grüße
bastla
Bitte warten ..
Mitglied: Skyemugen
03.08.2011 um 11:04 Uhr
Aloha bastla,

hm, dem letzten Vorschlag möchte ich widersprechen: (das wenn unbedingt erforderlich)

Wenn man if %errorlevel%==4 verwendet, ist es genau der Wert, den man angibt, im Gegensatz zu if errorlevel 4 , wo der Wert mindestens dem entspricht, den man angibt, was bedeutet, dass if errorlevel 0 bei E4 ebenso gültig ist, während if %errorlevel%==0 ungültig ist, da hier nicht nach mindestens abgefragt wird.

greetz André
Bitte warten ..
Mitglied: bastla
03.08.2011 um 11:17 Uhr
Hallo Skyemugen!
if errorlevel 0
wirst Du von mir nie als Vorschlag finden, da (wie Du richtig siehst) unsinnig ...

Der Aufbau sollte daher, wie dargestellt, mit dem höchsten zu prüfenden Wert (hier als Annahme "4") beginnen und dann absteigend die weiteren interessierenden Errorlevel abfragen.

Den Fall "Errorlevel=0" habe ich außerdem schon vorweg per "&&" abgehandelt.

Grüße
bastla

P.S.: Das "wenn unbedingt erforderlich" bezog sich nur darauf, ob der Errorlevel noch genauer ausgewertet werden soll, oder ob es nicht bereits genügt, dass (irgend) ein Fehler gemeldet wurde ...
Bitte warten ..
Mitglied: Skyemugen
03.08.2011 um 11:27 Uhr
Aloha bastla,

gut E0 war ein dummes Beispiel, da ich jedoch nahe dem EP bleiben wollte, wollte ich nur noch einmal klarmachen, dass die beiden Varianten eben unterschiedlich arbeiten und wenn man nicht jeden einzelnen E-Level abfragen bzw. definieren will aber sagen wir für den Fall E2 und E4 etwas angeben will, man nicht mit dem mindestens-Wert arbeiten sollte.

Gut, das war ein wenig an der hiesigen Situation vorbei aber mir war heute mal so, das nebenbei erwähnt zu haben. ist ja auch eine unterschwellige Information an den TE

greetz André
Bitte warten ..
Mitglied: bastla
03.08.2011 um 11:37 Uhr
Hallo Skyemugen!

Wenn franc
für den Fall E2 und E4 etwas angeben will
dann wäre tatsächlich das Zwischenspeichern des Errorlevels und die gezielte Abfrage eine vernünftige Vorgangsweise (es muss ja nicht unbedingt "ERRRLEVEL" als Variablenname verwendet werden ) ...

Grüße
bastla
Bitte warten ..
Mitglied: franc
03.08.2011 um 11:52 Uhr
Zitat von Skyemugen:
... was bitte ist %ERRRLEVEL%?


SOWASS!!!
Peinlich. Klar, jetzt geht's.



Danke.
Bitte warten ..
Mitglied: franc
03.08.2011 um 12:07 Uhr
Zur Klärung was ich will:

Ich kopiere mit Roboterkopie ein paar Verzeichnisse auf einen Netzwerkspeicher.
Es soll (mit Blatt.exe) eine Fehlermeldung gemailt werden, falls irgendetwas nicht funktioniert hatte, also wenn der ERRRLEVEL größer als 0 ist.

Danke der Erklärung des Unterschieds zwischen "if errorlevel 4" und "IF %ERRORLEVEL% == 4".
"if errorlevel 4" entspricht somit "IF %ERRORLEVEL% LEQ 4"

siehe:
http://de.wikibooks.org/wiki/Batch-Programmierung:_Batch-Befehle
Bitte warten ..
Mitglied: bastla
03.08.2011 um 12:12 Uhr
Hallo franc!
"if errorlevel 4" entspricht somit "IF %ERRORLEVEL% LEQ 4"
Nope - es wäre
IF %ERRORLEVEL% GEQ 4
- abgesehen davon war ich oben schon davon ausgegangen, dass Du nur zwischen "Fehler" und "kein Fehler" unterscheiden wolltest, und das lässt sich am einfachsten so realisieren:
xcopy C:\test.bat x:\test.bat && goto :END || goto :ERR
(wobei ein "goto" auch schon genügen könnte) ..

Grüße
bastla
Bitte warten ..
Mitglied: Skyemugen
03.08.2011 um 12:13 Uhr
Zitat von franc:
"if errorlevel 4" entspricht somit "IF %ERRORLEVEL% LEQ 4"

Nö, eigentlich umgekehrt: geq - denn es entspricht mindestens nicht höchstens

greetz André

edit: too late ^_^
Bitte warten ..
Mitglied: franc
03.08.2011 um 12:29 Uhr
Zitat von bastla:
...
xcopy C:\test.bat x:\test.bat && goto END || goto ERR 
> 
...

Ich habe mehrere robocopy Befehle. Also wäre das dann so?

robocopy C:\test1 X:\test1 || goto ERR 
robocopy C:\test2 X:\test2 || goto ERR 
 
goto END 
 
:ERR 
blat blabla 
 
:END 
ende
Bitte warten ..
Mitglied: bastla
03.08.2011 um 13:37 Uhr
Hallo franc!

Oder so:
01.
robocopy C:\test1 X:\test1 || (set "Quelle=test1" & goto ERR ) 
02.
... 
03.
:ERR 
04.
blat Fehler bei Sicherung von %Quelle% blabla 
05.
...
oder
01.
set "Fehler=" 
02.
for %%i in ("test1" "test2" "test3") do call :Sichern "%%i" 
03.
if defined Fehler blat Fehler bei %Fehler% ... 
04.
goto :eof 
05.
 
06.
:Sichern 
07.
robocopy "C:\%~1" "X:\%~1" && goto :eof 
08.
set "Fehler=%Fehler%_%1 
09.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: franc
03.08.2011 um 14:07 Uhr
Danke an alle.
Es klappt jetzt.
Zwar ganz primitiv, also nur wenn E0 dann mail:ok, wenn E>0 dann Mail:error
Bitte warten ..
Ähnliche Inhalte
C und C++
IF Abfrage funktioniert nicht mehr
gelöst Frage von pablovicC und C++2 Kommentare

Hallo Ich habe eine Frage zu einem, zu Übungszwecken, geschriebenen Programm und zwar handelt es sich um einen Rechenprogramm, ...

Batch & Shell
Batch Programmierung IF Abfragen
gelöst Frage von PathoeBatch & Shell8 Kommentare

Hallo zusammen, ich möchte gerne einige IF-Abfragen in einer Batch programmieren, was allerdings nicht so möchte wie ich. Er ...

Batch & Shell
Fehler in IF Abfrage
gelöst Frage von anmelderBatch & Shell4 Kommentare

Hallo, folgender Code macht Probleme: Die Zahl muß immer zweistellig eingegeben werden damit die Eingabe einheitlich ist, die 0 ...

Batch & Shell

Powershell IF Abfrage Vergleichsoperatoren

gelöst Frage von PeterzBatch & Shell4 Kommentare

Hallo, ich möchte in einer IF Abfrage Vergleichsoperatoren verknüpfen und bekomme es nicht hin. Es sollte so aussehen: IF ...

Neue Wissensbeiträge
Sonstige Systeme
Es war einmal ein BeOS - Wer erinnert sich noch?
Information von BassFishFox vor 12 StundenSonstige Systeme4 Kommentare

Hallo, Bin gerade ueber Haiku gestolpert, von dessen Existenz als "Nachfolger des BeOS" ich wusste nur mich nie wirklich ...

Datenschutz

Microsoft und DSGVO - ob das wohl jemals klappt (Probleme beim Datenabfluss für Office Pro Plus)?

Tipp von VGem-e vor 15 StundenDatenschutz3 Kommentare

Servus Kollegen, siehe Aber wer setzt schon MS Office Pro Plus ein? Wie dann der Stand beim "normalen" MS ...

Windows 10

Macht Windows 10.1809 Probleme mit gemappten Netzlaufwerken (betrifft wohl insbes. AMD-Hardware und Trend Micro AV-Produkte)?

Tipp von VGem-e vor 20 StundenWindows 103 Kommentare

Moin Kollegen, grad dazu gefunden und Hatten wir dies nicht bei früheren W10-Upgrades ebenfalls? Da bleibt nur, das Upgrade ...

Humor (lol)

Das neue Miniatur Wunderland OFFICIAL VIDEO - worlds largest model railway - railroad

Information von StefanKittel vor 1 TagHumor (lol)2 Kommentare

Hallo, wer noch nie im Miniatur Wunderland war, sollte es dringend mal nachholen. Es gibt eine neues Video. Viele ...

Heiß diskutierte Inhalte
Viren und Trojaner
Office365 Trojaner Analyse
Frage von ZeppelinViren und Trojaner14 Kommentare

Liebe Community, ich wende mich an euch, um mehr über den Office365 Trojaner zu erfahren, welcher grade seine Runden ...

Netzwerkgrundlagen
Werksreset HP 1920S-24G
gelöst Frage von HenereNetzwerkgrundlagen14 Kommentare

Servus zusammen, ich habe mir 2 neue Switche zugelegt, doch ich komme damit nicht ganz klar. Waren Vorführgeräte zum ...

DSL, VDSL
DSL Monitoring Tool - Quick and dirty?
Frage von george44DSL, VDSL13 Kommentare

Liebe Gemeinde, ich suche ein einfaches und vor allem schnell zu installierendes Monitoring-Tool zur kontinuierlichen Dokumentation (nur) der Internetanbindung. ...

Firewall
Sophos UTM 9.5 Firewall Log-File durchsuchen
gelöst Frage von Leo-leFirewall12 Kommentare

Hallo zusammen, weiß jemand von Euch, ob man bei der Sophos die Firewall logs noch etwas besser filtern kann? ...