Win10 - Batchfile im Autostart ausführen - Skriptfenster schließt nicht

[EH]Keeper

Lieutenant
Registriert
Aug. 2001
Beiträge
587
Hi,

ich möchte im Windows 10 (lokal angemeldeter User) eine Batchfile für den Autostart erstellen.
Es soll damit eine Citrix-App gestartet werden. Diese soll aber erst ausgeführt werden, wenn die Netzwerkverbindung steht (da Citrix sonst sofort die Verknüpfungen vom Desktop & Co. killt oder mit einer "kann nicht starten" Meldung abbricht).
An dem PC gibts keine Tastatur ode Maus, um evtl. im Nachhinein die Applikation erneut zu starten oder die Fehlermeldung zu bestätigen. Daher muss das sauber laufen.
Das Skript funktioniert auch wie gewünscht - auch wenn Win10 etwas braucht, bis es den Inhalt des Autostart Ordners abarbeitet.
Mein Problem ist aber, dass sich das CMD-Fenster nach dem Ausführen der Citrix-App nicht mehr schließt.
Wenn Citrix also verlassen wird, steht dann immer noch das Skriptfenster auf dem Bildschirm.

Wie kann ich dem PC nun mitteilen, dass er das CMD-Fenster nach dem Start der Applikation schließen soll?
Unter Windows 7 hat das bisher immer automatisch funktioniert. Win 10 legt einem da aber mal wieder einen Stein in den Weg ;)

Mein Skript sieht so aus:

@Echo OFF
ECHO warte auf Netzwerkverbindung
:1
ping -n 2 192.168.1.1 > NULL
if not errorlevel 1 goto 2
if errorlevel 1 ECHO ...pruefe Netzwerkverbindung. Bitte warten...
goto 1
:2
ECHO starte Citrix Applikation
"C:\Program Files (x86)\Citrix\ICA Client\SelfServicePlugin\SelfService.exe" -launch -reg "Software\Microsoft\Windows\CurrentVersion\Uninstall\SERVERNAME-63f65g68@@DOMÄNE PVS:NAME_DER_CITRIX_APPLIKATION"


Hat jemand ne Ahnung?
 
alles, was nach dem "C:\Program Files...." steht, wird scheinbar ignoriert :(
 
call ist das Stichwort...zur Exit-Zeile wird die Batch nie kommen, weil der Programmaufruf nicht abgeschlossen ist, solange das Programm noch läuft. Wenn der SelfService geschlossen wird, wird auch die Batch beendet.
 
mhm, der SelfService wird hier aber scheinbar nie geschlossen... arg.
setze ich das CALL vor den Pfad... also, call "c:\program ...." schließt sich zwar das Skriptfenster brav nach der Abarbeitung der Befehlszeilen, aber dafür wird die Citrix-App nicht gestartet .... mhmpf.
 
Hast du das Ding mal über die CMD gestartet?
Dann kannst du sehen, ob irgendwelche Fehlermeldungen die Batch killen.

Ich kann hier gerade leider keine Batches ausführen. Ansonsten probieren über start cmd /c explorer.exe.
In diesem Fall müsste die Batch weiterlaufen.

Das Problem bei Batches ist immer, dass sie eben keine Multitasking unterstützen. Das Ausbrechen ist nicht einfach. Es geht entweder mit call oder start cmd /c bin mir nicht mehr sicher.

Laut Doku ist call im übrigen falsch gewesen. Ich wette bei dir springt es wegen einer Fehlermeldung raus.
 
mhm... irgendwie will Win10 das nicht so richtig. Habe aber folgende Änderung gemacht, um aus diesem Problem noch einen Nutzen zu ziehen (siehe Fettschrift).

@Echo OFF
ECHO warte auf Netzwerkverbindung
:1
ping -n 2 192.168.1.1 > NULL
if not errorlevel 1 goto 2
if errorlevel 1 ECHO ...pruefe Netzwerkverbindung. Bitte warten...
goto 1
:2
cls
ECHO sie sind am PC: %COMPUTERNAME% angemeldet

"C:\Program Files (x86)\Citrix\ICA Client\SelfServicePlugin\SelfService.exe" -launch -reg "Software\Microsoft\Windows\CurrentVersion\Uninstall\SERVERNAME-63f65g68@@DOMÄNE PVS:NAME_DER_CITRIX_APPLIKATION"

Es läuft nun wie folgt ab:
erst wird auf die Netzwerkverbindung gewartet. Sobald diese steht, wird der Computername im DOS-Fenster (im Hintergrund) angezeigt und die Citrix-App im Vordergrund gestartet.
Wird Citrix dann wieder geschlossen, zeigt das DOS-Fenster immer noch brav den Computernamen an und sorgt so nicht weiter für "Verwirrung". Das DOS-Fenster habe ich noch mit Schriftgröße 36 versehen, damit es auch gewollt aussieht :). Wenn es jetzt also Probleme mit dem PC gibt, kann der User gleich sagen, an welchem PC er arbeitet :)
Eine recht geschmeidige Notlösung - wie ich finde.

Merci für eure Hilfe.
 
Wenn das Script nach Start eines Programs weiterlaufen soll, wird letzteres mit start auf gerufen.
Code:
start "" "blabla\car.exe" -tanke "Diesel"


So etwa würde ich das bauen. Vielleicht kannst ja was mit anfangen:
Code:
@echo off & title Citrix SelfService Startup
mode con: cols=33 lines=4
color 1b


set PROGRAM="%ProgramFiles(x86)%\Citrix\ICA Client\SelfServicePlugin\SelfService.exe"
set PARAMETERS=-launch -reg "Software\Microsoft\Windows\CurrentVersion\Uninstall\SERVERNAME-63f65g68@@DOMÄNE PVS:NAME_DER_CITRIX_APPLIKATION"



:loop
set /a Y+=1
set X==%X%
cls & echo.
echo  Warte auf Netzwerkverbindung...
echo  %X% & if %Y%==31 (set "X=" & set "Y=")
ping -n 1 "192.168.1.1" >nul 2>&1 && (cls & start ""  %PROGRAM% %PARAMETERS% & exit)
goto :loop
 
Zurück
Oben