Batch: Ergebnis aus Befehl abfragen und nutzen. If Errorlevel oder sowas
hey, ich habe folgenden Befehl in einer batch:
net stop "Radmin VPN Control Service"
Als Antwort erhalte ich:
"Systemfehler 5 aufgetreten.
Zugriff verweigert"
Weil die Datei als Administrator ausgeführt werden muss. Diese Fehlermeldung möchte ich nutn nutzen um in der Batch halt auszugeben:
"Datei als Administrator starten"
Also so etwas wie:
if errorlevel "systemfehler 5 augetreten" goto Admininfo
:Admininfo
echo Datei als Administrator ausführen
Mein Versuch:
echo off
net stop "Radmin VPN Control Service"
if %ERRORLEVEL% == 5 (
set Variable = 1
if Variable == 1 goto Admininfo
:Admininfo
echo Datei als Administrator starten
pause
exit
Wie geht das? Danke!
net stop "Radmin VPN Control Service"
Als Antwort erhalte ich:
"Systemfehler 5 aufgetreten.
Zugriff verweigert"
Weil die Datei als Administrator ausgeführt werden muss. Diese Fehlermeldung möchte ich nutn nutzen um in der Batch halt auszugeben:
"Datei als Administrator starten"
Also so etwas wie:
if errorlevel "systemfehler 5 augetreten" goto Admininfo
:Admininfo
echo Datei als Administrator ausführen
Mein Versuch:
echo off
net stop "Radmin VPN Control Service"
if %ERRORLEVEL% == 5 (
set Variable = 1
if Variable == 1 goto Admininfo
:Admininfo
echo Datei als Administrator starten
pause
exit
Wie geht das? Danke!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-Key: 530279
Url: https://administrator.de/contentid/530279
Ausgedruckt am: 30.06.2022 um 20:06 Uhr
5 Kommentare
Neuester Kommentar

Pack das an den Anfang des Batch-Skripts dann erübrigt sich der Hinweis 😉
Damit wird die Batch elevated gestartet sofern sie noch nicht elevated läuft.
net session >nul 2>&1 || (powershell start -verb runas '%~0' &exit /b)
Hi Julia,
ich verwende da meistens eine Abfrage ganz zu beginn des Scripts:
Falls es ohne Admin Rechte gestartet wird färbt sich das Fenster rot und es wird eine Fehlermeldung ausgegeben.
ich verwende da meistens eine Abfrage ganz zu beginn des Scripts:
rem Rechte prüfen
echo Rechte werden geprueft
net session >nul 2>&1
if %errorLevel% == 0 (
echo Success: Administrative Rechte wurden bestaetigt.
) else (
Color 4f
echo Failure: Keine ausreichenden Rechte. Bitte als Admin starten!
pause
exit
)
Falls es ohne Admin Rechte gestartet wird färbt sich das Fenster rot und es wird eine Fehlermeldung ausgegeben.

Siehst du doch oben, entweder den errorlevel per if abfragen wie LukasD es macht, oder eben mit den in die Pipe gehängten Operatoren && für Success oder || für failed arbeiten.
Voraussetzung dafür ist natürlich, dass der ausgeführte Befehl einen korrekt gesetzten Errorlevel zurückgibt. Tut er das nicht kann man aber auch das beheben indem man nach bestimmten Ausgabewerten mit einem in der Pipe nachgeschalteten find oder findstr arbeitet welcher dann einen richtigen Errorlevel ausgibt der ausgewertet werden kann.
Einfach mal lesen
https://it-stack.de/26/08/2010/batch-if-errorlevel/
https://sites.google.com/site/batchprogrammierung/befehle/befehle/if
WhateverCommand && (
echo Success
) || (
echo Failed
)
Einfach mal lesen
https://it-stack.de/26/08/2010/batch-if-errorlevel/
https://sites.google.com/site/batchprogrammierung/befehle/befehle/if