Eine Batchdatei in einem anderen Verzeichnis in python ausführen

Ich möchte die Datei mybat.bat in MyFolder ausführen, die sich von dem aktuellen Verzeichnis unterscheidet. Ich habe den folgenden Code verwendet:

 subprocess.Popen(["mybat", MyArg], cwd=MyFolder, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE) 

Allerdings bekomme ich folgende Fehlermeldung:

 "WindowsError: [Error 2] The system cannot find the file specified" 

Ich sollte erwähnen, dass, wenn ich mybat mit einem anderen Programm in der PATH wie notepad es absolut gut funktioniert.

2 Solutions collect form web for “Eine Batchdatei in einem anderen Verzeichnis in python ausführen”

Das Arbeitsverzeichnis wird nur im Kinderprozess geändert, dh cwd=MyFolder macht nicht os.path.join(MyFolder, "mybat.bat") Verfügung. Versuchen:

 p = Popen([os.path.join(MyFolder, "mybat.bat"), MyArg], cwd=MyFolder) 

Du kannst in deiner Bat-Datei %~dp0 verwenden, um das Verzeichnis zu erhalten, in dem sich die Bat-Datei anstelle von cwd=MyFolder als @eryksun befindet .

Hinzufügen Shell = True zu Befehl löste das Problem.

  • Python: Verwenden Sie Windows-api, um Text mit einem ttf-Schriftart zu rendern
  • Wie autorisieren / verweigern Schreibzugriff auf ein Verzeichnis auf Windows mit Python?
  • Stummdruck eines PDF in Python
  • Wie verwende ich Python, um Registry-Werte abzurufen?
  • Führen Sie Python-Binärdateien unter Windows XP aus
  • MAC-Adresse erhalten
  • Verwenden von sys.stdin in select.select unter Windows
  • Getting "Fehler: Kann nicht finden vcvarsall.bat" beim Ausführen "pip install numpy" auf windows7 64bit
  • Python-Teilprozeß-Ausgabe mit Bekenntnissen
  • Wie kann ich die Signalstärke von nahen WLAN-Netzwerken unter Windows mit Python abrufen?
  • Win32: Überprüfen Sie, ob das Fenster minimiert ist
  • Python ist die beste Programmiersprache der Welt.