berlinger
Goto Top

RUNONCE CMD Fenster minimieren

Hallo Leute

ich versuche mich gerade ein wenig mit Unattended Installationen und der Option von RUNONCE.

Soweit geht auch alles.. ich rufe nun via RUNONCE diverse CMD-Files auf, was auch geht. wie kann ich es organisieren, dass die Dinger minimiert starten?
REG ADD %KEY%\002 /VE /D "LogFile" /f  
REG ADD %KEY%\002 /V "0001" /D "%WINDIR%\SYSTEM32\CMD.exe /C START /WAIT /MIN %SYSTEMDRIVE%\\Tools\\Updater\\CMD\\LogFile.bat" /f  
funktioniert immerhin soweit, dass das LogFile.bat minimiert startet. Das CMD.exe bleibt aber im normalen Modus

Habe das ganze noch mit NIRCMDC versucht, ging aber irgendwie auch nicht
REG ADD %KEY%\002 /VE /D "LogFile" /f  
REG ADD %KEY%\002 /V "0001" /D "%SYSTEMDRIVE%\Tools\POS-Updater\BIN\NIRCMDC\nircmdc.exe exec min %SYSTEMDRIVE%\\Tools\\Updater\\CMD\\LogFile.bat" /f  

CMDOW oder wie das Teil heisst, würde gehen, aber wird immer als Virus erkannt...

Hat noch jemand eine Idee?

Content-ID: 225884

Url: https://administrator.de/forum/runonce-cmd-fenster-minimieren-225884.html

Ausgedruckt am: 24.12.2024 um 14:12 Uhr

colinardo
colinardo 05.01.2014 aktualisiert um 09:42:50 Uhr
Goto Top
Hallo berlinger,
eine Methode wäre es deine Batch über ein VBS-Hilfsscript zu starten:
http://superuser.com/questions/62525/run-a-completly-hidden-batch-file
oder deine Aktionen gleich direkt mit VB-Script umzusetzen.
Eine andere, das ganze mit AutoIT zu machen und eine "Exe" zu generieren.

Grüße Uwe
pieh-ejdsch
pieh-ejdsch 05.01.2014 aktualisiert um 12:48:50 Uhr
Goto Top
moin berlinger,

REG ADD %KEY%\002 /VE /D "LogFile" /f
REG ADD %KEY%\002 /V "0001" /D "%WINDIR%\SYSTEM32\CMD.exe /C START /WAIT /MIN %SYSTEMDRIVE%\\Tools\\Updater\\CMD\\LogFile.bat" /f
funktioniert immerhin soweit, dass das LogFile.bat minimiert startet. Das CMD.exe bleibt aber im normalen Modus

Das ist auch normales verhalten der cmd.exe. Du startest innerhalb der CMD einen Batch, auf dessen Ende gewartet wird, danach schließt der Aufzurufende Prompt.
@echo on
prompt $g$s
title Ich Bin die Simulationsbatch
rem %cmdcmdline%
rem Test mit /Wait 
 rem start /wait simuliert die einzelnen Abläufe
start "Warte auf Ende: Auf mich wird gewartet" /wait                            cmd /c start "Auf mich wird gewartet" /wait cmd /c "echo Hallo Welt! &ping localhost -n 10>nul"  
rem Test ohne /Wait 
start "ich warte nicht auf: Auf mich wartet niemand" /wait                      cmd /c start "Auf mich wartet niemand" cmd /c "echo Hallo Welt! &ping localhost -n 10>nul"  
ping localhost -n 11>nul
rem Test mit /min /Wait 
start "Warte auf Ende: Minimiert - Auf mich wird gewartet" /wait                cmd /c start "Minimiert - Auf mich wird gewartet" /wait /min cmd /c "echo Hallo Welt! &ping localhost -n 10>nul"  
rem Test mit /min ohne /Wait 
start "ich warte nicht auf: Minimiert - Auf mich wartet niemand" /wait          cmd /c start "Minimiert - Auf mich wartet niemand" /min cmd /c "echo Hallo Welt! &ping localhost -n 10>nul"  
ping localhost -n 11>nul
title Simulation fertig
pause
lass den /Wait im Startschlüssel weg.

Gruß Phil
berlinger
berlinger 05.01.2014 um 13:03:41 Uhr
Goto Top
@colinardo

danke.. sieht mal nicht schlecht aus. Muss mich mal mit VBS beschäftigen.

Im Moment habe ich die Fenster nun "hidden" was gut ist, aber es fehlt mir der WAIT Befehlt, so rasselt alles durch auch wenn das eine noch nicht fertig ist. Daher bekomme ich am ende diverse Fehler im Log face-smile
berlinger
berlinger 05.01.2014 um 21:27:00 Uhr
Goto Top
Hallo Phil

dies klingt soweit so gut. leider habe ich dann das gleiche Problem wie mit dem VBS.
ohne WAIT rasseln die Scripts einfach durch ohne aufeinander zu warten... dies bringt mir leider nur einen Teilerfolg face-smile
pieh-ejdsch
pieh-ejdsch 05.01.2014 um 21:52:41 Uhr
Goto Top
Nimm waitfor in den Batch mit rein.
Mit einem Batchparameter übergibst Du in dem regeintrag für den Anfang dem waitfor auf was für ein Signal gewartet werden soll.
So laufen die Batches minimiert, aber nicht davon.

Gruß Phil
berlinger
berlinger 06.01.2014 um 00:03:26 Uhr
Goto Top
Hi Phil

den kannte ich noch gar nicht face-smile klingt eigentlich noch Cool face-smile

leider kriege ich das Teil nicht in den restlichen REG-Key rein, so dass es am Schluss läuft.


REG ADD %KEY%\002 /VE /D "LogFile" /f
REG ADD %KEY%\002 /V "0001" /D "%WINDIR%\SYSTEM32\CMD.exe /WAITFOR /C START /WAIT /MIN %SYSTEMDRIVE%\\Tools\\Updater\\CMD\\LogFile.bat" /f
colinardo
colinardo 06.01.2014 aktualisiert um 00:46:28 Uhr
Goto Top
Zitat von @berlinger:
dies klingt soweit so gut. leider habe ich dann das gleiche Problem wie mit dem VBS.
wieso? wenn man es richtig macht nicht:

VBS-Datei(invisible.vbs)
CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0, True
Du hattest wahrscheinlich den letzten Parameter auf false stehen, deswegen haben die Scripts nicht aufeinander gewartet!
Die Zeile die dann deine Batch aufruft sieht dann so aus:
wscript.exe invisible.vbs "Logfile.bat"
Grüße Uwe


leider kriege ich das Teil nicht in den restlichen REG-Key rein, so dass es am Schluss läuft.
das ist auch kein Parameter des Kommandozeileninzerpreters sondern das eigenständige Tool WAITFOR (standardmäßig enthalten ab Windows 7), was @pieh-ejdsch meinte.
berlinger
berlinger 06.01.2014 um 22:23:21 Uhr
Goto Top
Hallo Uwe

danke für deine super hilfe.

also das VBS will auch mit TRUE nicht. irgendwie rasseln die Dinger trotzdem. Habe es mehrfach versucht..
WAITFOR habe ich auch in diversen Kombinationen mit meinem REG-Eintrag versucht. Bin mir nicht ganz sicher ob ich Ihn einfach nur falsch eingebaut habe oder sonst was.
colinardo
colinardo 06.01.2014 um 22:43:54 Uhr
Goto Top
Du hast aber nicht mehrere RunOnce Einträge angelegt oder ? Bei mehreren Einträgen im RunOnce Schlüssel ist die Reihenfolge nicht klar bzw. es kann nicht festgelegt werden in welcher Reihenfolge die Einträge ausgeführt werden. Also eine zentrale Batch anlegen aus der alle anderen der Reihe nach gestartet werden, und nur diese Batch mit dem "invisible.vbs"-Script starten, dann sollte das normalerweise klappen.
berlinger
berlinger 06.01.2014 um 23:17:17 Uhr
Goto Top
hmmm dies könnte sein. Ich rufe doch mehrere Sachen auf. Je über einen eigenen Reg-Key

ich ging eigentlich davon aus, dass die Nummerierung REG ADD %KEY%\002 /V "0001" die Reihenfolge festlegt.
mayho33
mayho33 11.01.2014 um 11:49:52 Uhr
Goto Top
Hi Berlinger!

Vielleicht trägst du aber nicht deine Batches ein in Runonce sonder einfach nur ein VBSCRIPT das deine Batches aufruft.

Vorteil: Nur ein Eintrag in Runonce. die VBS steuert den Ablauf und wartet sogar auf den RC deiner Batch wenn du willst.
Du ersparst dir das Herumfrickeln mit BATCHES.

Sorry gleich vorweg falls ich da jemandem zu nahe getreten bin.

Bsp:

Dim objShell : Set objShell = WScript.CreateObject("Wscript.Shell")
Dim rc : rc = -1
'0 = nicht anzeigen
'1 = Doch anzeigen
'True = auf die Beendigung des gestarteten Prozesses warten

rc = objShell.Run ("cmd /c " & Chr(34) & "<Pfad zu meiner Bat1>" & Chr(34), 0, True)
if (rc <> 0) then wscript.quit 1 else rc = objShell.Run ("cmd /c " & Chr(34) & "<Pfad zu meiner Bat 2>" & Chr(34), 0, True)
if (rc <> 0) then wscript.quit 1 else rc = objShell.Run ("cmd /c " & Chr(34) & "<Pfad zu meiner Bat 3>" & Chr(34), 0, True)
...
...
...


Grüße!

mayho