verwenden Batch-Code:
cd /D "C:\Projects"
call ENV\Scripts\activate.bat
start "Run Server" /D "C:\Projects\my_project" C:\Python27\python.exe C:\Projects\my_project\manage.py runserver
Der Befehl CD ohne Option /D
nichts tut, wenn das aktuelle Verzeichnis und angegebene Verzeichnis nicht auf demselben Laufwerk befinden. Daher ist es ratsam, immer die Option /D
zu verwenden, um den vollständigen Pfad eines Verzeichnisses anzugeben, das zum aktuellen Verzeichnis werden soll.
Der Befehl START läuft eine Batch-Datei oder Konsolenanwendung in einem neuen Befehlsprozess, der auf nicht verwendet zusätzlich die Möglichkeit, parallel zum Strombefehlsprozess ausgeführt wird /WAIT
aktuellen Befehlsprozess zu stoppen, bis sie beendet gestartet Befehlsprozess.
Die Stapeldatei legt offensichtlich Umgebungsvariablen fest. Dies geschieht im zusätzlichen Befehlsprozess, der keine Auswirkungen auf Umgebungsvariablen des aktuellen Befehlsprozesses hat, da jeder Prozess seine eigene Liste von Umgebungsvariablen hat, die beim Start des Prozesses von Windows aus dem aktuellen Prozess kopiert wurden.
Wenn die Batch-Datei activate
als Dateierweiterung .cmd
hat, muss die zweite Zeile im Batch-Code entsprechend angepasst werden.
Der Befehl CALL wird benötigt, um die Batch-Datei aufzurufen, die die Umgebungsvariablen jetzt in der Umgebung des aktuellen Befehlsprozesses setzt. Sobald die Ausführung dieser aufgerufenen Batchdatei beendet ist, wird der aktuelle Befehlsprozess mit der dritten Zeile der aktuellen Batchdateiausführung fortgesetzt, außer dass die Batchdatei activate
den Befehl ohne Option /B
oder einen Syntaxfehler enthält.
Last des Befehl START verwendet wird Python in einem neuen Befehlsprozess mit den Umgebungsvariablen von Windows von aktuellem Befehlsprozess mit C:\Projects\my_project
Satz als aktuelles Verzeichnis kopiert laufen.
Um die verwendeten Befehle und ihre Funktionsweise zu verstehen, öffnen Sie ein Eingabeaufforderungsfenster, führen Sie die folgenden Befehle aus und lesen Sie alle Hilfeseiten, die für jeden Befehl angezeigt werden, sorgfältig durch.
Siehe auch die Stack-Überlauf Antworten auf die Fragen:
Ohne '/ b ', die' Starten' Befehl sagt 'CreateProcess' eine neue Konsole zu erstellen, wenn das, was Sie von einem„neuen Befehlsprozess“bedeuten. In Windows 7 muss der Windows-Server (csrss.exe) eine neue Konsole (conhost.exe) erstellen und den Prozess anhängen. In Windows 8+ wird der Startcode im Prozess (kernelbase.dll) erstellt und an eine Konsole über Dateihandles angehängt. Er wird auf dem Konsolengerät (\ Device \ ConDrv) geöffnet. Es öffnet "Server", "Referenz" und "Verbinden", um die Konsole zu erstellen und anzuhängen. Dann öffnet "Input" als "StandardInput" und "Output" als "StandardOutput" und "StandardError". – eryksun
@Mofi Ich habe versucht, den Code, aber es scheint nicht für mich arbeiten ... auch die cmd schließt schnell, so habe ich "Pause" -Befehl enthalten, so um seinen Fortschritt zu überprüfen, aber es schließt auch nach der Ausführung, so kann ich die Elasticsearch nicht ausführen danach mit "start C: \ Projekte \ elasticsearch-5.2.1 \ bin \ elasticsearch". Vielleicht gibt es noch eine andere Arbeit? überprüfte die Hinweise/Hilfe, die Sie mir gaben, sie sind sehr informativ. Danke im Voraus! –
@GeorgeL Lesen Sie [Debuggen einer Batchdatei] (https://Stackoverflow.com/a/42448601/3074564) und nutzen Sie diese Informationen. Die Ausführung der Batch-Datei schlägt fehl, weil ein Syntaxfehler vom Windows-Befehlsinterpreter entweder in Ihrer Batch-Datei ausgegeben wird, wie die Datei als Uniode-Datei mit BOM anstelle der ANSI-Datei oder in der aufgerufenen Batch-Datei 'activate' speichert. Wenn das später der Grund ist, können wir Ihnen nicht helfen, ohne den Code dieser Batch-Datei und die Ausgabe-Fehlermeldung zu sehen. – Mofi