Antworten:
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.
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
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.
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"
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:
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.
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.
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 prompt
dann ausführen echo "hello"
Befehl
cmd
. Sie können einfach tippenstart rails s
.