Pythonスクリプトを使用して、Windowsで.bat
ファイルを実行しようとしました。
ask.bat
ファイル:
Application.exe work.xml
Python code:
import os
os.system("D:\xxx1\xxx2XMLnew\otr.bat ")
出力:ファイルを実行しようとすると、コマンドプロンプトが点滅するだけで、作業は実行されていません。
注:代替スラッシュも試してみますが、機能しません。
また、ファイルの出力を別のファイルに保存したいと思います。
誰でもスクリプトを実行可能にする方法を提案できますか?.
これについては既にSOで詳細に回答されています。このスレッドをチェックしてください。すべての質問に答えるはずです。 サブプロセスの実行に失敗します
私はこのコードで自分で試しました:
batchtest.py
from subprocess import Popen
p = Popen("batch.bat", cwd=r"C:\Path\to\batchfolder")
stdout, stderr = p.communicate()
batch.bat
echo Hello World!
pause
前述のスレッドからbatchtest.pyの例を入手しました。
import subprocess
filepath="D:/path/to/batch/myBatch.bat"
p = subprocess.Popen(filepath, Shell=True, stdout = subprocess.PIPE)
stdout, stderr = p.communicate()
print p.returncode # is 0 if success
実行が現在の作業ディレクトリに依存しないような方法で.bat
ファイルを書き込むことをお勧めします。つまり、この行を.bat
ファイルの先頭に置くことをお勧めします。
cd "%~dp0"
.bat
ファイルのファイルパスを二重引用符で囲みます。例:
os.system('"D:\\x\\so here can be spaces\\otr.bat" ["<arg0>" ["<arg1>" ...]]')
バッチコマンドの出力を別のファイルに保存するには、通常の リダイレクト構文 を使用できます。例:
os.system('"...bat" > outputfilename.txt')
または、直接.bat
ファイルで:
Application.exe work.xml > outputfilename.txt
パスの\を/に置き換えます
import os
os.system("D:/xxx1/xxx2XMLnew/otr.bat ")
おそらくこれを行う最も簡単な方法は->
import os
os.chdir("X:\Enter location of .bat file")
os.startfile("ask.bat")
python_test.py
import subprocess
a = subprocess.check_output("batch_1.bat")
print a
これにより、バッチファイルからの出力がpython IDLE /実行コンソールに出力されます。したがって、バッチファイルでは、問題をデバッグするために各ステップで結果をエコーできます。エラーを簡単に理解して特定するために、バッチコールでエラーが発生します。
batch_1.bat
echo off
echo "Hello World"
md newdir
echo "made new directory"
あなたはそれを生のままにするだけではありません。問題は「\」にあります。パスの前にrを追加すると、作業が行われます:)
import os
os.system(r"D:\xxx1\xxx2XMLnew\otr.bat")
だから私はWindows 10でPython 3.7.1(テスト済み):
import subprocess
Quellpfad = r"C:\Users\MeMySelfAndI\Desktop"
Quelldatei = r"\a.bat"
Quelle = Quellpfad + Quelldatei
print(Quelle)
subprocess.call(Quelle)
exe
-ファイル内の別のbat
ファイルを呼び出そうとしている場合。呼び出しているbat
-ファイル内でSET Path
を使用する必要があります。 set Pathは、exe
-ファイルがあるディレクトリを指す必要があります。
set PATH=C:\;C:\DOS {Sets C:\;C:\DOS as the current search path.}