it-swarm.com.de

Wie minimiere ich den Befehl Prompt aus meiner bat-Datei?

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?

34
Matt Elhotiby

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

Wie es funktioniert

Wenn das Skript ausgeführt wird, ist IS_MINIMIZED nicht definiert (if not DEFINED IS_MINIMIZED).

  1. IS_MINIMIZED ist auf 1 gesetzt : set IS_MINIMIZED=1.
  2. Das Skript startet eine Kopie von sich selbst mit dem Befehl start command && start "" /min "%~dpnx0" %*. Dabei gilt Folgendes:

    1. "" - leerer Titel für das Fenster.
    2. /min - zu minimierter Ausführung wechseln.
    3. "%~dpnx0" - vollständiger Pfad zu Ihrem Skript.
    4. %* - Durchlaufen aller Parameter Ihres Skripts.
  3. 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.

Bemerkungen

  • Sie müssen einen Variablennamen reservieren, um ihn als Flag verwenden zu können.
  • Das Skript sollte mit 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

55
izzekil

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. 

38
Cody Gray

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.

15
Bruno Silva

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.


Quelle: https://stackoverflow.com/a/45061676/1178975

3
user1cat

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
  • der 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
  • der ^& 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.

3
Pedi T.

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.

1
robert4

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.

1
Kyroflash

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:

min.exe http://www.paulsadowski.com/wsh/cmdprogs.htm

cmdow http://www.commandline.co.uk/cmdow/index.html

1
Bernard Chen

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
0
npocmaka

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
0
Pedi T.

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.

0
SSi

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.

http://www.pcreview.co.uk/forums/command-Prompt-tool-minimize-command-window-after-starts-t2037434.html

0
Mr Griever

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

0
PatchedUp