BAT-Datei: Öffnen Sie ein neues Cmd-Fenster und führen Sie dort einen Befehl aus

163

Ich versuche, ein neues Befehlsfenster in einer BAT-Datei zu öffnen:

start %windir%\system32\cmd.exe

Nach dem Öffnen möchte ich im neuen Fenster einen BAT-Befehl ausführen:

echo "test in new window"

Wie kann ich das machen?

Tjekkles
quelle

Antworten:

263

Möglicherweise finden Sie Ihre Antwort bereits, weil Sie vor einiger Zeit gefragt haben. Aber ich habe versucht, etwas Ähnliches zu tun, wenn ich ror codiere. Ich wollte "Rails Server" in einem neuen Cmd-Fenster ausführen, damit ich kein neues Cmd öffnen und dann meinen Pfad wiederfinden muss.

Was ich herausgefunden habe, war, den K-Schalter wie folgt zu verwenden:

start cmd /k echo Hello, World!

Start bevor "cmd" die Anwendung in einem neuen Fenster öffnet und "/ K" "echo Hello, World!" nachdem der neue cmd hoch ist.

Sie können den Schalter / C auch für ähnliche Zwecke verwenden.

start cmd /C pause

Dies führt dann "Pause" aus, schließt jedoch das Fenster, wenn der Befehl ausgeführt wird. In diesem Fall, nachdem Sie eine Taste gedrückt haben. Ich fand dies nützlich für "Rails Server". Wenn ich dann meinen Entwicklungsserver herunterfahre, muss ich das Fenster danach nicht mehr schließen.

aross
quelle
2
Wenn Sie damit einen Rails-Server ausführen, müssen Sie tatsächlich nichts eingeben cmd. Sie können einfach tippen start rails s.
Fbonetti
86

Verwenden Sie Folgendes in Ihrer Batch-Datei:

start cmd.exe /k "more-batch-commands-here"

oder

start cmd.exe /c "more-batch-commands-here"

/ c Führt den durch string angegebenen Befehl aus und beendet dann
/ k Führt den durch string angegebenen Befehl aus, bleibt aber bestehen

cmd /?Weitere Informationen finden Sie in der Dokumentation zu cmd.exe .

Die korrekte Formatierung der Befehlszeichenfolge wird durch Leerzeichen in den Argumenten etwas komplizierter. Siehe die folgenden Beispiele. Beachten Sie in einigen Beispielen die Verwendung verschachtelter doppelter Anführungszeichen.

Beispiele:

Führen Sie ein Programm aus und übergeben Sie einen Dateinamenparameter:
CMD /c write.exe c:\docs\sample.txt

Führen Sie ein Programm aus und übergeben Sie einen langen Dateinamen:
CMD /c write.exe "c:\sample documents\sample.txt"

Leerzeichen im Programmpfad:
CMD /c ""c:\Program Files\Microsoft Office\Office\Winword.exe""

Leerzeichen im Programmpfad + Parameter:
CMD /c ""c:\Program Files\demo.cmd"" Parameter1 Param2
CMD /k ""c:\batch files\demo.cmd" "Parameter 1 with space" "Parameter2 with space""

Starten Sie demo1 und demo2:
CMD /c ""c:\Program Files\demo1.cmd" & "c:\Program Files\demo2.cmd""

Quelle: http://ss64.com/nt/cmd.html

Shannon Matthews
quelle
13

Das ist nicht sehr einfach.

Der beste Ansatz besteht darin, den Teil Ihres Skripts, den Sie ausführen möchten, in einem "neuen Fenster" in einer separaten .bat-Datei zu haben. Dies kann unpraktisch sein, wenn Sie beispielsweise vom Rest Ihres Skripts (Variablen usw.) viel Status benötigen. Eine Möglichkeit besteht darin, alle benötigten Werte (z. B. das Verzeichnis, in dem gearbeitet werden soll) an die Batchdatei zu übergeben:

start cmd.exe stuff.bat %this_dir%

Wenn Sie eine große Menge an Status übertragen müssen, können Sie zur Laufzeit eine Batchdatei generieren:

set foo=Hello, World
set list_me=%userprofile%

set tmpdir=c:\windows\temp
set tmp=%tmpdir%\tmp.foo

del /q /f "%tmp%"

echo.echo %foo%>>"%tmp%"
echo.dir "%list_me%">>>"%tmp"

start cmd.exe "%tmp%"

del /q /f "%tmp%"

Offensichtlich ist dies ein triviales Beispiel.

sorpigal
quelle
11

Die obigen Antworten haben mir geholfen. Aber es musste noch etwas herausgefunden werden. Hier ist ein Beispielskript, mit dem ich 3 Prozesse für die Webentwicklung starte. Dies führt dazu, dass 3 Fenster geöffnet bleiben, da sie kontinuierlich ausgeführt werden müssen.

Mongo wird global zu meinem Pfad hinzugefügt, sodass ich nicht wie bei den beiden anderen Programmen eine CD erstellen muss. Natürlich wird der Pfad zu Ihren Dateien variieren, aber hoffentlich hilft dies.

:: Start MongoDB
start cmd.exe /k "mongod"

:: cd app directory, and start it
cd my-app
start cmd.exe /k "npm run dev"

:: cd to api server, and start that
cd ../my-app-api
start cmd.exe /k "npm run dev"
Dan Zuzevich
quelle
7

Vielen Dank an alle hier in Stack Overflow; Diese Lösung löst die obige Frage, wird jedoch erweitert, um die folgenden Aufgaben automatisch auszuführen:

  1. Ich möchte meinen Rails-Server betreiben
  2. Führen Sie einen Rake-Job aus: Arbeiter auch für mein Juwel "delay_job"
  3. und Öffnen Sie den Standard-Internetbrowser, um meine Seite anzuzeigen
  4. Schließlich, um ein Cmd-Fenster für zusätzliche Befehle während meiner Sitzung offen zu lassen .

Ich denke mein Projekt heißt "Antiquorum".

Erstellen Sie eine "init.bat" -Datei in Ihrem % USERPROFILE% -Verzeichnis (öffnen Sie ein cmd- Fenster und sehen Sie sich den Pfad links neben dem Cursor an, um zu erfahren, was% USERPROFILE% ist.)

@echo off
cd C:/projects/rails3/antiquorum
if "%1" == "antiquorum" GOTO start
if "%1" == "worker" GOTO worker
if "%1" == "server" GOTO server
if "%1" == "" GOTO end
:start
    start cmd /k %USERPROFILE%\init.bat worker
    start cmd /k %USERPROFILE%\init.bat server
    TIMEOUT 30
    start "" "http://localhost:3000/"
    GOTO end
:server
    rails s
    GOTO end
:worker
    rake jobs:work
:end

Geben Sie in einem neuen Befehlszeilenfenster Folgendes ein: C:> init antiquorum

Der Code öffnet zwei weitere cmd-Fenster und einen Browser. TIMEOUT vermeidet Fehler im Browser.

Der Abschnitt : start erledigt die Arbeit. Sie können die Aufgaben 1, 2 oder 4 separat ausführen, indem Sie die folgenden Parameter eingeben: Server , Worker oder Keine, um eine Cmd im Stammverzeichnis des "Antiquorum" -Projekts geöffnet zu lassen .

Genießen.

Fer Padron
quelle
2

Wenn ich verstehe, dass Sie dies nebenbei richtig machen, öffnet Ihre Bat-Datei die Eingabeaufforderung und druckt Ihre Nachricht auf dem Bildschirm.

cmd.exe hello world

hoffe das hilft.

Chris Derry
quelle
2

So führen Sie eine Python-Datei in einem neuen Cmd-Fenster mit Leerzeichen im Dateinamen aus:

start cmd.exe /k python "C:\Program Files\HelloWorld.py"
Bracoo
quelle
0

Durch Hinzufügen zwischen zwei Befehlen werden beide Befehle ausgeführt ./k in order

Beispiel:

cmd /k echo "hello"

dieser Befehl wird zuerst öffnen command promptdann ausführen echo "hello"Befehl

Vicky Salunkhe
quelle