2016-03-28 2 views
-1

実行後に構成ファイルを生成しているバッチスクリプトがあり、生成された構成ファイルには内部にデータがいくつかあります。なぜpythonスクリプトから実行した場合、またはダブルクリックして実行するとバッチファイルが機能しないのですか?

C:/> start.bat 

が、私は以下のかとPythonスクリプトから実行しようとした場合、私は倍増しても、それをクリックして、私は、設定ファイルを得るか、それを実行するが、次のように私は、コマンドプロンプトから実行すると、私は、所望の出力を得ます私は実際にPythonスクリプトを実行すると、以下のように設定ファイルにそのデータを取得しています

import subprocess as sp 
p= sp.Popen("C:/pathtobatch/start.bat",stdin=sp.PIPE, stdout = sp.PIPE, stderr=sp.PIPE) 

バッチスクリプト(START.BAT)内側::

それは単に「0」は内部を持っているすべての必要なデータが含まれていません
python C:\inetpub\ftproot\sample.py > log.txt 
set myvar =< log.txt 
del log.txt 
echo %errorlevel% %myvar% >C:\inetpub\ftproot\config.txt 

pythonスクリプトからバッチ(start.bat)を実行し、必要なデータを持つconfig.txtファイルを生成する必要があります。それで、どうすればいいのですか? start.batがダブルクリックするとうまく動作しないのはなぜですか?コマンドプロンプトから実行している場合、start.batがうまく動作しないのはなぜですか。

+0

バットの最後に 'pause'を入れてダブルクリックしてみてください。 – WhoAmI

+0

@WhoAmIいいえ、一時停止を追加しても動作しません。:/ – Learner

+2

どこにでも完全なパスを指定します。実行環境の設定に関するこの無意味な質問は何度も何度も繰り返し尋ねられます。あなたが何をしたいかを正確に指定します。 '%userprofile%\ desktop'は通常、ユーザのデスクトップになります。 –

答えて

1

%errorlevel%の値は「0」になる可能性はありますか?

私はあなたの場合、2つの問題が見つかりました:

1)バッチファイル - あなたのような何かにあなたのバッチファイルを更新してくださいすることができます:変数の設定の考え方について

for /f %%i in ('python C:\inetpub\ftproot\sample.py') do set myvar=%%i 
echo %errorlevel% %myvar% >C:\inetpub\ftproot\config.txt 

クレジット:https://stackoverflow.com/a/2340018/5088142

2)pythonスクリプト - あなたのPythonスクリプトを次のように更新してください:

import os 
os.system("C:/pathtobatch/start.bat") 
+0

学習者 - 今は動作しますか? – Yaron

関連する問題