2011-01-14 18:23:22 +0000 2011-01-14 18:23:22 +0000
59
59

Wie erstelle ich eine Windows-Batch-Datei, die bei der Ausführung nicht die Eingabeaufforderung anzeigt?

Ich habe ein Rubinjuwel namens Redcar installiert, das von der Befehlszeile aus gestartet wird. Wenn es ausgeführt wird, stiehlt es die Shell, bis es beendet wird, so daß ich ein neues Shell-Fenster erstellen muß, um mit der Arbeit an der Befehlszeile fortzufahren. Die Shell, die ich benutze, ist die GITBash-Shell von MySysGit.

Ich habe eine Redcar.bat-Datei gefunden, die Redcar als Abkürzung starten soll, nehme ich an, aber ich möchte nicht, daß das zusätzliche Kommandozeilenfenster jedesmal geöffnet wird, wenn ich die BAT-Datei starte.

Wie führe ich einfach die BAT aus, ohne den Prompt zu sehen?

Antworten (11)

38
38
38
2011-01-21 18:41:45 +0000

Das können Sie nicht - das Ausführen einer Batch-Datei mit der eingebauten Eingabeaufforderung wird ein Fenster offen halten, bis die Batch-Datei beendet wird.

Was Sie können ist, Schritte zu unternehmen, um sicherzustellen, dass die Batch-Datei so schnell wie möglich beendet wird. Wenn irgend möglich, modifizieren Sie die Batch-Datei so, dass jedes beliebige Programm mit dem Befehl start ausgeführt wird. Standardmäßig kehrt start sofort zurück, ohne darauf zu warten, dass das Programm beendet wird, so dass die Batch-Datei weiter läuft und vermutlich sofort beendet wird. Wenn Sie die Verknüpfung so ändern, dass die Stapeldatei minimiert ausgeführt wird, sehen Sie nur die Taskleiste blinken, ohne dass Sie überhaupt ein Fenster auf dem Bildschirm sehen.

Ein Vorbehalt hierzu ist, dass bei der Ausführung eines Programms im Konsolenmodus, wie es viele Skript-Interpreter sind, die Stapeldatei auf das Beenden des Programms wartet und bei Verwendung von start ein neues Konsolenfenster erzeugt. Was Sie in diesem Fall tun müssen, ist, die Windows-basierte Version des Interpreters statt der konsolenbasierten Version laufen zu lassen – kein start notwendig. Für Perl würden Sie wperl.exe anstelle von perl.exe ausführen. Für Python würden Sie pythonw.exe statt python.exe ausführen. Die alte win32-Ruby-Distribution, die ich heruntergeladen habe, hat rubyw.exe, was dasselbe tun sollte.

Eine letzte Möglichkeit ist, ein 3rd-Party-Tool zu benutzen, um die Eingabeaufforderung mit einem versteckten Fenster auszuführen. Ich habe von solchen Dingen gehört, hatte aber nie eine Verwendung dafür, so dass ich nichts Besonderes kenne, auf das ich Sie hinweisen könnte.

22
22
22
2014-01-15 06:25:25 +0000

Ich denke, das 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 planen wollen, die periodisch ausgeführt werden sollen, so dass das DOS-Fenster immer wieder aufspringt, hier ist Ihre Lösung. Verwenden Sie ein VB-Skript, um die Batch-Datei aufzurufen …

Set WshShell = CreateObject("WScript.Shell" ) 
WshShell.Run chr(34) & "C:\Batch Files\ mycommands.bat" & Chr(34), 0 
Set WshShell = Nothing

Kopieren Sie die obigen Zeilen in einen Editor und speichern Sie die Datei mit der Erweiterung .VBS. Bearbeiten Sie den .BAT-Dateinamen und -Pfad entsprechend. Führen Sie dann einfach die .vbs-Datei aus, und der Zauber beginnt!

8
8
8
2013-01-02 05:37:05 +0000

Sie können eine weitere Batch-Datei mit START /MIN CMD.EXE /C mybatchfile.bat innerhalb der Eingabeaufforderung ausführen.

Von außerhalb bringt es das cmd-Konsolenfenster, aber um das zu vermeiden, können Sie eine Verknüpfungsdatei mit Eigenschaften erstellen, die so modifiziert ist, dass sie minimiert startet.

5
5
5
2016-09-11 08:06:00 +0000

Verwenden Sie dazu das Programm Bat To Exe Converter , um Ihre Batch-Datei in eine ausführbare Datei zu konvertieren.

Bei der Konvertierung in eine ausführbare Datei finden Sie im Abschnitt Sichtbarkeit eine Option, mit der Sie Ihre Datei als Unsichtbare Anwendung ausführen können. Wenn Sie sie also ausführen, wird sie ohne Fenster ausgeführt.

4
4
4
2012-12-18 07:07:00 +0000

Wenn Sie mit Dennis Williamsons Antwort fortfahren, können Sie die Stapeldatei bearbeiten und START /B an den auszuführenden Befehl anhängen (voranstellen).

Ich habe zum Beispiel eine Stapeldatei, die Kitt ausführt und das gleiche Problem hatte (extra CMD), also habe ich sie so geschrieben:

@ECHO OFF START /B putty.exe -load _name\_of\_my\_config\_file_

Es funktionierte perfekt.

4
4
4
2011-01-14 19:32:24 +0000

Probieren Sie es aus:

START /B batchfile

Note durch Barlop hinzugefügt

beginnt /? sagt von /B

B Start application without creating a new window. The
             application has ^C handling ignored. Unless the application
             enables ^C processing, ^Break is the only way to interrupt
             the application.
3
3
3
2015-04-25 09:00:42 +0000

Sie können RunHiddenConsole

hideExec.bat

@echo off
RunHiddenConsole batch.bat
``` verwenden.
3
3
3
2011-01-21 18:20:43 +0000

Ich bin mir über Ihr Problem nicht im Klaren, aber bei einigen meiner Batch-Dateien verwende ich einen “Dumy”, dessen einziger Zweck es ist, die Haupt-Stapeldatei zu starten.

GO.BAT wird also haben:

cmd /c go2.bat %1 %2 %3
exit

Das Beenden schließt das Eingabeaufforderungsfenster, das sonst offen bleiben würde.

Und GO2.BAT wird den tatsächlichen Inhalt der Batch-Datei haben, den ich mir wünsche.

@echo off
  set userid=

  if NOT [%1]==[] goto userid:
  set /p userid=Enter USERID:  
  goto set_usr:

 :userid
 set userid=%1
 shift

 :set_usr
 if %userid%==steven goto steven:
 ...
0
0
0
2013-03-04 00:36:09 +0000

Stellen Sie einfach den Schalter /b vor den Pfad. Dadurch wird die zweite Eingabeaufforderung nicht geöffnet.

0
0
0
2014-10-18 16:43:48 +0000

Indagos Antwort war für mich bisher die beste Lösung. Die VBS-Datei ermöglicht es mir, die Funktionalität des Stapels durch das Skript laufen zu lassen und das CMD-Fenster gar nicht erst entstehen zu lassen. Es gibt jedoch ein paar Vorbehalte:

  1. Wenn Ihr Batch Administratorrechte erfordert, erstellen oder verwenden Sie einen vorhandenen Batch, der den VBS aufruft, und führen Sie diesen Batch als Administrator aus.

  2. Ohne Sichtbarkeit kann es schwierig sein, zu erkennen, ob das, was Sie versuchen, tatsächlich so läuft, wie Sie es wollen.

Abgesehen davon würde ich vor der Integration zunächst einen kleinen Probeaufbau/Einheitstest durchführen, um sicherzustellen, dass es genau so funktioniert, wie Sie es wollen.

0
0
0
2016-05-20 07:11:31 +0000

Ich habe in der Vergangenheit cmdow verwendet, und es scheint für das, was ich will, funktioniert zu haben.

Wahrscheinlich werden Sie eine der folgenden Optionen verwenden wollen:CMDOW [window] /HID

/HID versteckt das angegebene Fenster

CMDOW [window] /END schließt das angegebene Fenster

/END

CMDOW [window] /CLS bat höflich darum, das Fenster zu schließen (einige Fenster öffnen möglicherweise ein Dialogfeld)

Hoffentlich hilft das.