Diese Frage hat hier bereits eine Antwort:
Ich habe einen Rubinstein namens Redcar installiert, der von der Kommandozeile aus gestartet wird. Wenn es ausgeführt wird, stiehlt es die Shell, bis es beendet wird. Daher muss ein neues Shell-Fenster erstellt werden, um die Befehlszeilenarbeit fortzusetzen. Die von mir verwendete Shell ist die GITBash-Shell von MySysGit.
Ich habe eine Redcar.bat-Datei gefunden, die dazu gedacht ist, Redcar als Verknüpfung zu starten, aber ich möchte nicht, dass das zusätzliche Eingabeaufforderungsfenster geöffnet wird, wenn ich die BAT-Datei starte.
Wie starte ich das BAT, ohne die Eingabeaufforderung zu sehen?
windows
command-line
batch
Jake
quelle
quelle
set var1=hello.txt
Zeile 2:start "test" notepad.exe "%~dp0%var1%"
::
oder@REM
. Quelle: superuser.com/a/843754/101936Antworten:
Dies ist nicht möglich. Wenn Sie eine Batchdatei mit der eingebauten Eingabeaufforderung ausführen, bleibt ein Fenster geöffnet, bis die Batchdatei beendet wird.
Sie können lediglich Maßnahmen ergreifen, um sicherzustellen, dass die Batchdatei so schnell wie möglich beendet wird. Wenn möglich, ändern Sie die Batch-Datei so, dass mit dem
start
Befehl ein beliebiges Programm ausgeführt wird. Standardmäßig wirdstart
sofort zurückgegeben, ohne auf das Beenden des Programms zu warten, sodass die Batchdatei weiterhin ausgeführt und vermutlich sofort beendet wird. Wenn Sie die Verknüpfung so ändern, dass die Batchdatei minimiert wird, wird nur die Taskleiste angezeigt, ohne dass ein Fenster auf dem Bildschirm angezeigt wird.Eine Einschränkung besteht darin, dass die Batch-Datei auf das Beenden des Programms wartet und
start
ein neues Konsolenfenster erzeugt , wenn Sie ein Programm im Konsolenmodus ausführen, das viele Skriptinterpreter verwenden . In diesem Fall müssen Sie die Windows-basierte Version des Interpreters anstelle der konsolenbasierten Version ausführen - dies ist nichtstart
erforderlich. Für Perl würden Siewperl.exe
statt ausführenperl.exe
. Für Python ist espythonw.exe
anstelle vonpython.exe
. Die alte Ruby-Distribution von Win32, die ich heruntergeladen haberubyw.exe
, sollte dasselbe tun.Eine letzte Möglichkeit besteht darin, ein Drittanbieter-Tool zu verwenden, um die Eingabeaufforderung mit einem ausgeblendeten Fenster auszuführen. Ich habe von solchen Dingen gehört, konnte sie aber nie gebrauchen, daher weiß ich nichts Besonderes, auf das ich Sie hinweisen könnte.
quelle
Ich denke, dies ist die einfachste und kürzeste Lösung, um eine Batch-Datei auszuführen, ohne das DOS-Fenster zu öffnen. Es kann sehr störend sein, wenn Sie eine Reihe von Befehlen für die regelmäßige Ausführung planen möchten . Verwenden Sie ein VB-Skript, um die Batch-Datei aufzurufen ...
Kopieren Sie die obigen Zeilen in einen Editor und speichern Sie die Datei mit der Erweiterung .VBS. Bearbeiten Sie den Namen und den Pfad der .BAT-Datei entsprechend. Dann starte einfach die .vbs-Datei und die Magie ist da!
quelle
Sie können eine andere Batchdatei mit START / MIN CMD.EXE / C mybatchfile.bat über die Eingabeaufforderung ausführen.
Von außen wird das cmd-Konsolenfenster angezeigt. Um dies zu vermeiden, können Sie eine Verknüpfungsdatei mit Eigenschaften erstellen , die so geändert wurden, dass sie minimiert werden .
quelle
Verwenden Sie dazu das Programm Bat To Exe Converter , um Ihre Batch-Datei in eine ausführbare Datei zu konvertieren.
Beim Konvertieren in eine ausführbare Datei finden Sie im Bereich Sichtbarkeit eine Option zum Ausführen Ihrer Datei als unsichtbare Anwendung . Wenn Sie es also ausführen, wird es ohne Fenster ausgeführt.
quelle
Wenn Sie Dennis Williamsons Antwort fortsetzen, können Sie die Batch-Datei bearbeiten und
START /B
an den Befehl, den Sie ausführen, anhängen (voranstellen) .Zum Beispiel habe ich eine Batch-Datei, die putty ausführt und das gleiche Problem hat (extra CMD). So habe ich es geschrieben:
Es hat perfekt funktioniert.
quelle
Probieren Sie es aus:
note von barlop hinzugefügt
Start /? sagt von / B
quelle
Ihr Problem ist mir nicht klar, aber bei einigen meiner Batch-Dateien verwende ich einen "Dumy", dessen einziger Zweck darin besteht, die Haupt-Batch-Datei zu starten.
GO.BAT wird also haben:
Der Exit schließt das Eingabeaufforderungsfenster, das sonst geöffnet bleiben würde.
Und GO2.BAT wird den eigentlichen Inhalt der Batch-Datei haben, den ich mir wünsche.
quelle
Sie könnten RunHiddenConsole verwenden
hideExec.bat
quelle
Wenn Sie immer noch daran interessiert sind, das Konsolenfenster überhaupt nicht anzuzeigen, ist hier eine Lösung von stackoverflow, die für mich funktioniert hat (in meinem Fall habe ich nichts in die Registrierung aufgenommen, aber wo ich es brauchte).
quelle
Stellen Sie einfach den Schalter / b vor den Pfad. Die zweite Eingabeaufforderung wird nicht geöffnet.
quelle
Indagos Antwort war für mich bisher die beste Lösung. Mit der VBS-Datei kann ich die Funktionalität des Stapels über das Skript ausführen und so verhindern, dass das CMD-Fenster überhaupt erst auftritt. Es gibt jedoch ein paar Einschränkungen:
Wenn für Ihren Stapel Administratorrechte erforderlich sind, erstellen oder verwenden Sie einen vorhandenen Stapel, der den VBS aufruft, und führen Sie diesen Stapel als Administrator aus.
Ohne Sichtbarkeit kann es schwierig sein zu erkennen, ob das, was Sie versuchen, tatsächlich so läuft, wie Sie es möchten.
Nachdem dies gesagt wurde, würde ich zuerst einen kleinen Mock-Setup / Unit-Test durchführen, um sicherzustellen, dass es genau so funktioniert, wie Sie es möchten, bevor ich es integriere.
quelle
Ich habe cmdow in der Vergangenheit verwendet und es scheint so zu funktionieren, wie ich es will.
Möglicherweise möchten Sie eine der folgenden Optionen verwenden:
CMDOW [window] /HID
/HID
verbirgt das angegebene FensterCMDOW [window] /END
/END
Schließt das angegebene FensterCMDOW [window] /CLS
/CLS
bat höflich das Fenster zu schließen (einige Fenster öffnen möglicherweise ein Dialogfeld)Hoffe das hilft.
quelle
Erstellen Sie einfach eine Verknüpfung zur Stapeldatei, klicken Sie mit der rechten Maustaste darauf, klicken Sie auf
Properties
, wechseln Sie zurGeneral
Registerkarte, aktivieren Sie das KontrollkästchenHidden
, klicken Sie aufApply
und dann aufOK
.Jetzt, wenn Sie die Verknüpfung öffnen, wird die Batch-Datei Hidden ausgeführt.
quelle