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-Key: 225884

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

Printed on: April 19, 2024 at 08:04 o'clock

Member: colinardo
colinardo Jan 05, 2014 updated at 08:42:50 (UTC)
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
Member: pieh-ejdsch
pieh-ejdsch Jan 05, 2014 updated at 11:48:50 (UTC)
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
Member: berlinger
berlinger Jan 05, 2014 at 12:03:41 (UTC)
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
Member: berlinger
berlinger Jan 05, 2014 at 20:27:00 (UTC)
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
Member: pieh-ejdsch
pieh-ejdsch Jan 05, 2014 at 20:52:41 (UTC)
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
Member: berlinger
berlinger Jan 05, 2014 at 23:03:26 (UTC)
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
Member: colinardo
colinardo Jan 05, 2014 updated at 23:46:28 (UTC)
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.
Member: berlinger
berlinger Jan 06, 2014 at 21:23:21 (UTC)
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.
Member: colinardo
colinardo Jan 06, 2014 at 21:43:54 (UTC)
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.
Member: berlinger
berlinger Jan 06, 2014 at 22:17:17 (UTC)
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.
Member: mayho33
mayho33 Jan 11, 2014 at 10:49:52 (UTC)
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