Batchscripte mit variablenübergabe
Aufruf einer Batch-Datei aus einer anderen Datei und übergabe eines Parameters (zurück)
Hi,
also ich habe 2 CMD-Files
cmd1.bat
cmd2.bat
sowas in der Art will ich haben. Also ich rufe das 2. Batchfile aus dem ersten auf und benötige einen Rückgabewert.
ich habe das ganze auch schon mit
versucht, allerdings schiest mir ja dann die ganze shell ab.
Hat noch jemand eine Idee?
Gruß,
Steffen
Hi,
also ich habe 2 CMD-Files
cmd1.bat
@echo off
setlocal
call cmd2.bat
if "%_return%"=="2" goto TOLL
if "%_return%"=="1" goto NICHTTOLL
goto EOF
:TOLL
echo XXX
goto EOF
:NICHTOLL
echo YYY
goto EOF
:EOF
cmd2.bat
@echo off
setlocal
echo mache irgendwas
endlocal & set _return=2
sowas in der Art will ich haben. Also ich rufe das 2. Batchfile aus dem ersten auf und benötige einen Rückgabewert.
ich habe das ganze auch schon mit
exit 1
exit 2
Hat noch jemand eine Idee?
Gruß,
Steffen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 113561
Url: https://administrator.de/contentid/113561
Ausgedruckt am: 26.11.2024 um 06:11 Uhr
14 Kommentare
Neuester Kommentar
Hallo Knumskull!
Das Problem besteht darin, dass der Errorlevel innerhalb der "for /f"-Schleife (aus Zeile 20) ausgewertet werden soll - ohne "delayedExpansion" wird aber der Wert der Variablen (eben auch von %errorlevel%) bereits zu Beginn der Schleife ermittelt ...
Funktionieren sollte aber
oder, wenn es keiner weiterer Unterscheidung bedarf, einfach (da bei "if errorlevel" immer eine Abfrage auf ">=angegebener Wert" erfolgt):
Damit hättest Du dann beide Fälle abgedeckt.
Grüße
bastla
Das Problem besteht darin, dass der Errorlevel innerhalb der "for /f"-Schleife (aus Zeile 20) ausgewertet werden soll - ohne "delayedExpansion" wird aber der Wert der Variablen (eben auch von %errorlevel%) bereits zu Beginn der Schleife ermittelt ...
Funktionieren sollte aber
if errorlevel 55 (
if errorlevel 1 (
echo Die Maschine %%I benoetigt ein Update!
) else (
echo Die Maschine %%I benoetigt KEIN Update!
)
Grüße
bastla
is klar, wenn errorlevel 55, denn is das ja auch größer 10 ... also beide ausgaben ...
Wenn es doch aber ein klarer Fall von "entweder - oder" ist, warum dann nicht die oben dargestellte Konstruktion mit dem "else"?Grüße
bastla
P.S.: Buchtipp habe ich leider keinen zu bieten (aber ein gutes Forum wüsste ich ) ...
Hallo Knumskull!
So sollte es natürlich dann auch gehen - oder, etwas entspannter (und ohne "delayedExpansion"):
Grüße
bastla
So sollte es natürlich dann auch gehen - oder, etwas entspannter (und ohne "delayedExpansion"):
FOR /F "delims=" %%I IN (%LOCAL_MACHINELIST%) DO (
rem # Test ob der Rechner erreichbar ist.
ping -n 1 %%I >NUL 2>&1 && call :Check "%%i"
)
goto :eof
:Check
rem # da erreichbar, wird die Datei 'check_update_ws.bat' auf dem Rechner gestartet.
call %CAE_CHECK_UPDATE_WS_FILE% %1
rem # Debug
rem echo %ErrorLevel: %errorlevel%
if %errorlevel%==55 goto :Update
if %errorlevel%==20 goto :KeineCAE
if %errorlevel%==10 goto :KeinAdmin
if %errorlevel%==0 goto :Aktuell
echo %~1: Unbekannter Fehler %errorlevel%
rem echo\
goto :eof
Update
echo %~1: benoetigt Update!
rem echo.
rem ...
goto :eof
:KeineCAE
rem # Keine CAE-Berechnungsumgebung installiert.
echo %~1: Keine CAE-Berechnungsumgebung installiert!
rem echo.
goto :eof
:KeinAdmin
rem # Keine Adminrechte
echo %~1: Kein Zugriff, eventuell fehlen die Adminrechte!
rem echo.
goto :eof
:Aktuell
echo %~1: aktueller Stand.
rem echo.
goto :eof
bastla