In einem Shell-Skript, das ich den folgenden Code haben:if/then/else-Anweisungen in Windows Batch
if echo Mr.32 ; then
echo Success
else
echo Failed
exit
fi
Was ist das Äquivalent Syntax für Windows Batch-Dateien?
In einem Shell-Skript, das ich den folgenden Code haben:if/then/else-Anweisungen in Windows Batch
if echo Mr.32 ; then
echo Success
else
echo Failed
exit
fi
Was ist das Äquivalent Syntax für Windows Batch-Dateien?
Ich habe eine harte Zeit Vorstellung, wenn ECHO mit einem zurückgegebenen ERRORLEVEL ungleich 0 fehlschlagen würde. Ich nehme an, es könnte fehlschlagen, wenn die Ausgabe in eine Datei umgeleitet wurde und das Ziellaufwerk voll ist.
CptHammer hat eine gute Lösung mit ERRORLEVEL gepostet, obwohl es GOTO unnötigerweise verwendet. Es kann ohne GOTO getan werden:
ECHO Mr.32
if errorlevel 1 (
echo Failed
exit /b
) else (
echo Success
)
Es ist eine einfachere Art und Weise Aktion auf Erfolg oder Misserfolg eines Befehls zu nehmen.
command && success action || failure action
In Ihrem Fall
ECHO Mr.32&& (
echo Success
) || (
echo Failed
exit /b
)
Wenn Errorlevel 1 (commandgroup1) else (commandGroup2) commandGroup1 für ANY-Returncode über 1 ausführt (dh: CommandGroup1 ist Failur und CommandGroup2 ist Success) – cptHammer
"Befehl && Erfolg Aktion || Fehler Aktion" Dies ist ein sehr guter Antwort auf diese Frage. Danke für die Hilfe! –
Ich denke, so etwas wie dies könnte den Trick tun:
REM run the command
ECHO Mr.32
IF ERRORLEVEL 1 GOTO failLabel
:successLabel
REM put code to execute in case of success here.
ECHO Success
GOTO endLabel
:failLabel
REM put code here that should be executed in case of failure.
ECHO Failed
:endLabel
Dies setzt voraus, der Befehl, den Sie (hier: echo MR.32) testen wollen, gibt bei Erfolg 0 und etwas höher bei Ausfall (ACHTUNG: Echo In den meisten Fenstern gibt das Betriebssystem nichts zurück und daher ist der tatsächliche Wert, der in diesem Skript getestet wird, wahrscheinlich der Rückkehrcode aus dem letzten Befehl, der kurz vor dem Skript ausgeführt wurde "das gibt 0 zurück, wenn eine Datei vorhanden ist und 1 andernfalls."
Es ist wahr, wie Dbenham darauf hingewiesen hat, dass diese Struktur re verwendet viel GOTO. Dies liegt daran, dass diese GOTO-Struktur die einzige ist, die in allen Windows-Versionen gut verstanden wird. Mit der Zeit erschienen kompaktere Versionen, die jedoch nur mit den neuesten Windows-Versionen funktionieren.
ja echo Mr.32 gibt 0 zurück, wenn sein Erfolg voll ist, aber hier geht es in failed label ... –
In den meisten Windows-Versionen gibt der Echo-Befehl nichts zurück. Wenn der letzte ausgegebene Befehl vor der Skriptausführung fehlgeschlagen ist, wird daher die fehlgeschlagene Nachricht angezeigt. Wenn andererseits der letzte Befehl, der vor diesem Skript ausgeführt wurde, erfolgreich war, erhalten Sie die Erfolgsmeldung. – cptHammer
Können Sie uns mitteilen, was Sie bisher versucht haben? – Levon
http://mevaldez.home.mchsi.com/Batch.pdf – larsks
FYI: 'wenn eval echo foo' sollte' if echo foo' sein; Eval zu benutzen, hat keinen Zweck. Siehe auch http://mywiki.wooledge.org/BashFAQ/048 –