xxsadmin
Goto Top

Sprungziel im erste Batch aus eine zweite erreichen

Hallo zusammen,

ich versuche eine zweite Batch aufzurufen die eine if Abfrage beinhaltet und wenn diese if Abfrage nicht passt, möchte ich wieder zurück in die erste Batch, an einen bestimmten Sprungziel gehen.
Leider klappt das nicht. Könnt Ihr mir vielleicht ein Tipp geben.

Danke

folgendes Beispiel:

Batch_1:

...
call Batch_2


:end
echo End of the Batch


Batch_2

if ..... (
REM hier die zweite Batch weiter bearbeiten.
goto next
) ELSE (
REM hier am ende der erste Bach gehen
goto end
)

:next
...
...
...

Content-Key: 175858

Url: https://administrator.de/contentid/175858

Printed on: April 18, 2024 at 01:04 o'clock

Member: bastla
bastla Nov 06, 2011 at 15:46:00 (UTC)
Goto Top
Hallo xxsadmin!

"goto Batch_2" könnte das nur heißen, wenn "Batch_2" in "Batch_1" integriert wäre (was Deine etwas magere Beschreibung - wozu eigentlich die ganze "Herumspringerei"? - aber nicht vermuten lässt) - daher "call Batch_2", wodurch nach dem Ende von "Batch_2" in der Zeile nach diesem "call" die Verarbeitung in "Batch_1" weiter fortgesetzt wird.

Um eine "Rückmeldung" von "Batch_2" zu erhalten, könntest Du diesen mit "exit /b Zahl" beenden, wodurch die "Zahl" als Errorlevel in "Batch_1" ausgewertet werden könnte.

Grüße
bastla
Member: xxsadmin
xxsadmin Nov 06, 2011 at 16:33:07 (UTC)
Goto Top
Hallo bastla,

soll natürlich call Batch_2 heißen face-smile

Mit Batch_1 soll Program X installiertet werden. Zuerst wird aber mit Batch_2 geprüft ob das Programm X bereits installiert ist. Wenn Programm X installiert ist wird es zuerst deinstalliert und erst danach wieder installiert. Soll aber bei der Deinstallation ein Fehler auftreten, muss die Abarbeitung abgebrochen werden. Also suche ich eine Möglichkeit die Subroutine (Batch_2) zu beenden bzw. am ende des Skript zu gelangen. GOTO eof z.B. würde aber nur die Subroutine beenden.
Mitglied: 60730
60730 Nov 06, 2011 at 18:16:12 (UTC)
Goto Top
edit...
wer lesen kann....
Bastla hats ganz fies face-wink versteckt....

return to Sender
/edit
Member: xxsadmin
xxsadmin Nov 06, 2011 at 19:10:15 (UTC)
Goto Top
Wenn ich den zweite Script an der markierte stelle mit exit beenden würde, würde die Installation in den ersten Script fortgesetzt.
Ich habe die beide Scripts ein wenig detaillierter beschrieben.

Batch_1

@echo=off & setlocal

REM aufruf uninstall

call uninstall.bat

REM ## Installation erstes Programm ##
set ERRORLEVEL=
setup.exe /silent
set INSTALL_ERROR=%ERRORLEVEL%
if "%INSTALL_ERROR%" == "0" (  
	echo Install successful >> Logfie.log
	goto next
) ELSE (
	echo Install error %INSTALL_ERROR% >> Logfile.log
	goto exit
)
	
:next
REM ## Installation naechstes Programm ##

:exit

echo Installation fehgeschlagen >> Logfile
exit %INSTALL_ERROR%

REM ## Pruefung und deinstallation ##

REM ## Prueffen ob Software installiert ist ##

if exist "C:\Program_X (  
	echo Program ist bereits installiert >> Logfile.log
	goto uninstall
) ELSE (
	echo Program nicht vorhanden  >> Logfile.log
	goto next
)
set ERRORLEVEL=
:uninstall
set INSTALL_ERROR=%ERRORLEVEL%
if "%INSTALL_ERROR%" == "0" (  
	echo Uninstall successful >> Logfie.log
	goto next
) ELSE (
	echo Uninstall Error %INSTALL_ERROR% >> Logfile.log
	goto exit  ??? <-------- hier soll die Abarbeitung beider Scripts abgebrochen werden.
)

setup.exe /uninstall


:next

REM ## naechstes Program pruefen ##
Mitglied: 60730
60730 Nov 06, 2011 at 19:18:12 (UTC)
Goto Top
salve

naja Bastla hat dir doch den Weg gezeigt (den ich auch zuerst übersehen hatte)

Machs doch viel einfacher..
Du schreibst doch eh ein Log..
Wenn Fehler, dann steht da Uninstall Error

findstr /c:"Uninstall Error" Logfile.log && goto abbruch

Gruß
Member: xxsadmin
xxsadmin Nov 06, 2011 at 20:31:08 (UTC)
Goto Top
Alles klar, danke euch

Jetzt habe ich auch den Unterschied zwischen "exit" und "exit /b" versanden face-wink