Ich versuche, die Ausgabe von net stop
zu protokollieren, während auch ERRORLEVEL
gefangen wird.ERRORLEVEL in FOR/F Befehlsschleife gibt unerwartetes Ergebnis zurück
Basierend auf this question ich versucht, die folgenden aus einer verschachtelten Unterprogramm:
set /a loopIndex=0
for /F "usebackq delims=" %%i in (`net stop %SERVICE_NAME%`) do (
if !loopIndex! EQU 0 if !errorlevel! EQU 1 set statementError=1
set /a loopIndex+=1
call :logMessage "%%i"
)
echo statementError: %statementError%
Dies ist jedoch nicht funktioniert, werfen 1
auch wenn net stop
gelingt.
Ist dies ohne eine temporäre Datei möglich? Wenn nicht, wie würde eine temporäre Dateilösung aussehen?
ERRORLEVEL ist keine Umgebungsvariable. Es muss nicht mit% oder! Umgeben sein. 'IF ErrorLevel 1' funktioniert einwandfrei. –
Lesen Sie den verknüpften Beitrag erneut. * Zusätzlich zu diesem internen Status können Sie, wenn Sie möchten, eine Umgebungsvariable mit dem Namen ERRORLEVEL ** erstellen, genauso wie Sie eine Umgebungsvariable namens FRED erstellen können. Aber wie bei FRED hat diese Variable keinen Einfluss auf die Fehlerstufe. * (** Betonung meiner **). –
@KenWhite 'ERRORLEVEL' * ist * eine automatische Umgebungsvariable, genau wie' CD', 'DATE' oder' RANDOM'. – dxiv