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?
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
CMDOW oder wie das Teil heisst, würde gehen, aber wird immer als Virus erkannt...
Hat noch jemand eine Idee?
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
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?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 225884
Url: https://administrator.de/forum/runonce-cmd-fenster-minimieren-225884.html
Ausgedruckt am: 24.12.2024 um 14:12 Uhr
11 Kommentare
Neuester Kommentar
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
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
moin berlinger,
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.
lass den /Wait im Startschlüssel weg.
Gruß Phil
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
Gruß Phil
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:dies klingt soweit so gut. leider habe ich dann das gleiche Problem wie mit dem VBS.
VBS-Datei(invisible.vbs)
CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0, True
Die Zeile die dann deine Batch aufruft sieht dann so aus:
wscript.exe invisible.vbs "Logfile.bat"
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.
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.
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.
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
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