Ich habe diese bat-Datei und möchte das cmd-Fenster beim Ausführen minimieren:
@echo off
cd /d C:\leads\ssh
call C:\Ruby192\bin\setrbvars.bat
Ruby C:\leads\ssh\put_leads.rb
Grundsätzlich möchte ich das Befehlsfenster sofort minimieren. Irgendwelche Ideen, wie das geht?
Es gibt eine recht interessante Möglichkeit, das Skript minimiert auszuführen, indem er den Neustart minimiert. Hier ist der Code, den Sie am Anfang Ihres Skripts einfügen müssen:
if not DEFINED IS_MINIMIZED set IS_MINIMIZED=1 && start "" /min "%~dpnx0" %* && exit
... script logic here ...
exit
Wenn das Skript ausgeführt wird, ist IS_MINIMIZED
nicht definiert (if not DEFINED IS_MINIMIZED
).
set IS_MINIMIZED=1
.Das Skript startet eine Kopie von sich selbst mit dem Befehl start command && start "" /min "%~dpnx0" %*
. Dabei gilt Folgendes:
""
- leerer Titel für das Fenster./min
- zu minimierter Ausführung wechseln."%~dpnx0"
- vollständiger Pfad zu Ihrem Skript.%*
- Durchlaufen aller Parameter Ihres Skripts.Dann beendet das erste Skript seine Arbeit: && exit
.
Für die gestartete Kopie der Skriptvariablen wird IS_MINIMIZED
durch das Originalskript festgelegt, sodass die Ausführung der ersten Zeile einfach übersprungen wird und die Skriptlogik direkt aufgerufen wird.
exit
beendet werden, andernfalls würde das cmd-Fenster nach der Skriptausführung nicht geschlossen.Wenn Ihr Skript keine Argumente akzeptiert, können Sie Argument anstelle von Variablen als Flag verwenden:
if "%1" == "" start "" /min "%~dpnx0" MY_FLAG && exit
oder kürzer if "%1" == "" start "" /min "%~f0" MY_FLAG && exit
Verwenden Sie den Befehl start
mit der Option /min
, um die Ausführung zu minimieren. Zum Beispiel:
start /min C:\Ruby192\bin\setrbvars.bat
Da Sie eine Batchdatei als Argument angegeben haben, wird der Befehlsprozessor ausgeführt, wobei Sie den Schalter /k
übergeben. Das bedeutet, dass das Fenster nach Abschluss des Befehls auf dem Bildschirm angezeigt wird. Sie können dieses Verhalten ändern, indem Sie cmd.exe
selbst explizit ausführen und ggf. die entsprechenden Optionen übergeben.
Alternativ können Sie eine Verknüpfung zur Stapeldatei erstellen (sind PIF-Dateien immer noch in der Nähe), und dann ihre Eigenschaften ändern, sodass sie minimiert werden.
Die einzige Möglichkeit, die ich kenne, besteht darin, eine Windows-Verknüpfung zur Batchdatei zu erstellen und dann die Eigenschaften so zu ändern, dass sie standardmäßig minimiert ausgeführt werden.
Mit PowerShell können Sie aus derselben Datei minimieren, ohne eine neue Instanz zu öffnen.
powershell -window minimized -command ""
Auch -window hidden
und -window normal
können vollständig ausgeblendet oder wiederhergestellt werden.
Wenn Sie den Batch für Win-Run/Autostart starten möchten, habe ich hier eine schöne Lösung gefunden https://www.computerhope.com/issues/ch000932.htm & https://superuser.com/ Fragen/364799/How-to-Run-the-Command-Prompt-minimized
cmd.exe /c start /min myfile.bat ^& exit
cmd.exe
wird als Start benötigt und ist kein Windows-Befehl, der außerhalb eines Stapels ausgeführt werden kann/c
= nach dem Start beenden^& exit
-Teil sorgt dafür, dass das Fenster geschlossen wird, auch wenn der Stapel nicht mit exit
endet.Das anfängliche cmd wird jedoch immer noch nicht minimiert.
Ein weiteres kostenloses Tool von Drittanbietern, das das Konsolenfenster jederzeit minimieren kann (nicht nur beim Starten des Skripts), ist Tcl mit der TWAPI-Erweiterung:
echo package require twapi;twapi::minimize_window [twapi::get_console_window] | tclkitsh -
hier befindet sich tclkitsh.exe
im PATH und ist eine der tclkit-cli-*-twapi-*.exe
-Dateien, die von sourceforge.net/projects/twapi/files/Tcl binaries/Tclkits mit TWAPI/ heruntergeladen werden können. Ich ziehe es dem viel leichteren min.exe
vor, das in Bernard Chens Antwort erwähnt wird, weil ich TWAPI bereits für unzählige andere Zwecke verwende.
Wenn Sie diesen Text in Ihre bat-Datei eingeben:
start blah.exe /min
Es wird sofort minimiert, sobald das Programm geöffnet wird. Sie sehen nur ein kurzes Aufblinken und es wird verschwinden.
Eine Option besteht darin, eines der verschiedenen Dienstprogramme zu finden, das den Fensterstatus des derzeit aktiven Konsolenfensters ändern und aus dem Batch-Skript heraus aufrufen kann.
Sie können es als erstes in Ihrem Batch-Skript ausführen. Hier sind zwei solcher Tools:
Sie können den Befehl Eingabeaufforderung während des Laufs minimieren, aber Sie benötigen zwei zusätzliche Skripts: Fenstermodus und getCmdPid.bat :
@echo off
call getCmdPid
call windowMode -pid %errorlevel% -mode minimized
cd /d C:\leads\ssh
call C:\Ruby192\bin\setrbvars.bat
Ruby C:\leads\ssh\put_leads.rb
Eine andere Option, die für mich gut funktioniert, ist die Verwendung von ConEmu, siehe http://conemu.github.io/de/ConEmuArgs.html
"C:\Program Files\ConEmu\ConEmu64.exe" -min -run myfile.bat
Eine Möglichkeit, das Cmd-Fenster zu "minimieren", besteht darin, die Größe der Konsole zu reduzieren, indem Sie ...
echo DO NOT CLOSE THIS WINDOW
MODE CON COLS=30 LINES=2
Sie können den COLS auf ca. 18 und die LINES auf 1 reduzieren, wenn Sie möchten .. Der Vorteil ist, dass er unter WinPE, 32-Bit oder 64-Bit arbeitet und kein Drittanbieter-Dienstprogramm erfordert.
Ich weiß nicht, ob es eine Möglichkeit gibt, ein Fenster von einer Eingabeaufforderung zu minimieren, wenn es einmal geöffnet ist, aber der folgende Artikel schlägt vor, den tatsächlichen Prozess als Kind in einem neuen, vorminimierten Fenster aufzurufen.
Sie können versuchen, ein Skript wie folgt auszuführen
var WindowStyle_Hidden = 0
var objShell = WScript.CreateObject("WScript.Shell")
var result = objShell.Run("cmd.exe /c setrbvars.bat", WindowStyle_Hidden)
speichern Sie die Datei als Dateiname.js