ovu-p86
Goto Top

Batch - start WAIT - funktioniert nicht

Hallo,

will unter XP SP3 ein Programm über einen Cmd aufrufen.

Dabei soll zunächst ein Dienst gestartet werden dann ein Programm aufgerufen werden.
Erst nach Beendigung des Programms soll der Cmd weiterlaufen und den Dienst wieder beenden.

Bei dem aufzurufenden Programm handelt es sich um VirtualBox/BitBox.

net start BitBoxService
start "" /Wait C:\progr\kommu\BitBoxVM\BitBox\Client\BitBox.exe  
net stop BitBoxService

Problem: Der Cmd läuft durch. Habs auch mit Call und nur Programmaufruf probiert. Hab mir zunächst mit "Pause" beholfen, ab das ist keine schöne Lösung.

Ist mir auch schon bei anderen Programmen aufgefallen, das "start /wait ....." nicht funktioniert.
Ähnliches mit Vmware bspw. funktioniert.

1. Frage: Woran liegt es, daß "start /wait" bei manchen Programmen funktioniert und bei einigen nicht?

Mein konkreter Fall ist evtl. speziell, da "VirtualBox/BitBox" automatisch mit einem anderen Benutzerkonto gestartet wird.

2. Frage: Wie ich kann ich den konkreten Fall lösen?


Bin für Lösungsvorschläge dankbar.

Gruß
Uwe

Content-ID: 171995

Url: https://administrator.de/forum/batch-start-wait-funktioniert-nicht-171995.html

Ausgedruckt am: 22.12.2024 um 01:12 Uhr

BigWim
BigWim 24.08.2011 um 13:03:27 Uhr
Goto Top
Hallo Uwe,

das funktioniert schon - nur nicht wie Du es Dir vorstellst face-wink

Wenn Du das ganze mal mit Notepad.exe probierst, wirst Du sehen, dass alle Deine Varianten funktionieren.

Vermutlich macht die BitBox.exe "etwas" (Aufruf einer weiteren Anwendungen, ....) und beendet sich dann wieder.

So etwas wirst Du vielleicht mit einer Schleife (Abfrage des Tasks) hinbekommen, was Du aber gut überdenken solltest.

Gruß
Markus
ovu-p86
ovu-p86 24.08.2011 um 13:44:20 Uhr
Goto Top
Hallo Markus,

genau, es funktioniert ja mit diversen Programmen, aber manchmal eben nicht.

Hab mal geguckt. Du hast recht, die BitBox.exe ist in der Tat nicht als Process zu finden. Stattdessen eben div. andere von BitBox.exe aufgerufene.

Die Lösung der Task-Abfrage ließe sich also realisieren, möchte aber eine Schleife mit ständiger Abfrage des Tasks wegen der zusätzlichen Ressourcennutzung vermeiden.

Gibt es noch eine andere Möglichkeit?

Gruß
Uwe
ovu-p86
ovu-p86 24.08.2011 um 14:58:40 Uhr
Goto Top
Hallo Markus,

da es wohl keine andere Lösung gibt, hab ichs jetzt doch mit der Schleife gemacht und mir einen Task rausgepickt.

Ressourcen halten sich doch in Grenzen. Ists mir wert. Brauch mich dann nicht mehr um den Cmd kümmern.

@echo off & setlocal
net start BitBoxService
C:\progr\kommu\BitBoxVM\BitBox\Client\BitBox.exe
FOR /L %%n IN (1,1,1000000000000) DO ping -n 10 localhost > nul & for /f %%i in ('tasklist^| find /I /C "bitb.exe"') do if %%i EQU 0 net stop BitBoxService & exit  

So funktionierts.

Danke nochmal für deinen Hinweis: "Vermutlich macht die BitBox.exe "etwas" (Aufruf einer weiteren Anwendungen, ....) und beendet sich dann wieder."
Das war das Problem.


Gruß
Uwe


[edit]
Um kein vordefiniertes Ende der Schleife zu haben die Zeile 4 von oben durch
:schleife
ping -n 10 localhost > nul & for /f %%i in ('tasklist^| find /I /C "bitb.exe"') do if %%i EQU 0 (net stop BitBoxService) ELSE (goto schleife)  
ersetzen

[/edit]
BigWim
BigWim 24.08.2011 um 15:27:57 Uhr
Goto Top
Hallo Uwe,

freut mich, Dir einen entscheidenen Tipp gegeben zu haben.

Vielleicht hätte ich da noch einen. Du kannst Deine Batch etwas vereinfachen, in etwa so

@echo off

:CheckTask
REM Sleep 2
REM tasklist | find /I /C "notepad.exe" >NUL: && echo Notepad gestartet && goto :CheckTask  
tasklist | find /I /C "bitb.exe" >NUL: && Sleep 2 && goto :CheckTask  

echo Ende

Und dann kannst Du den Thread auf gelöst jetzt - das macht sich gut in meiner Statistik face-wink [Edit] Ich brauche eine Brille! [/Edit]

Gruß
Markus
Skyemugen
Skyemugen 24.08.2011 um 15:56:22 Uhr
Goto Top
Aloha Markus,

sleep.exe ist aber nicht bei jedem im Systemverzeichnis vorhanden, wenn es Windows-Default ist face-wink (dann gibt es kein sleep 2)

greetz André
BigWim
BigWim 24.08.2011 um 16:07:04 Uhr
Goto Top
Hallo André,

sleep.exe ist aber nicht bei jedem im Systemverzeichnis vorhanden
jetzt versteh ich endlich mal die Sportaufgabe mit dem Ping.

Danke für den Hinweis

Gruß
Markus