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-ID: 175858

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

Ausgedruckt am: 26.11.2024 um 07:11 Uhr

bastla
bastla 06.11.2011 um 16:46:00 Uhr
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
xxsadmin
xxsadmin 06.11.2011 um 17:33:07 Uhr
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.
60730
60730 06.11.2011 um 19:16:12 Uhr
Goto Top
edit...
wer lesen kann....
Bastla hats ganz fies face-wink versteckt....

return to Sender
/edit
xxsadmin
xxsadmin 06.11.2011 um 20:10:15 Uhr
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 ##
60730
60730 06.11.2011 um 20:18:12 Uhr
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ß
xxsadmin
xxsadmin 06.11.2011 um 21:31:08 Uhr
Goto Top
Alles klar, danke euch

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