2016-03-22 2 views
0

私はプロセスの実行時間を計算している.batスクリプトを持っています。次のように:.batスクリプトから戻り値を取得するにはどうすればよいですか?

set startTime=%time% 
YourApp.exe 
echo Start Time: %startTime% 
echo Finish Time: %time% 

さて、私はこの.BATスクリプトが呼び出されるスクリプトのいくつかの変数に「終了時間」を返すようにしたいが、私は.BATスクリプトから値を返す方法を取得しておりません。親切に私がそれを達成する方法を提案する。

+0

どういう意味ですか? Finish Timeを環境変数(Start Timeなど)に格納するか、コンソールにFinish Timeを出力して呼び出しスクリプトで取り込むようにしますか? – aschipfl

+0

実行時間の測定に関する[this thread](http://stackoverflow.com/q/673523/5047996)に興味があるかもしれません... – aschipfl

+0

@aschipfl計算したプロセスの終了時刻を取得したい.batからPythonスクリプトへの値 – Learner

答えて

1

あなたはスクリプト側から出力

import subprocess 
import re 

output = subprocess.Popen(
    ("yourBatch.bat", "arguments1", "argument2"), 
    stdout=subprocess.PIPE).stdout 

finish_time_search = re.search('Finish Time: (.*)', output[1], re.IGNORECASE) 

if finish_time_search: 
    finish_time = finish_time_search.group(1) 

output.close() 
+0

私はあなたが言ったように、私のPythonスクリプトを "ファイル" C:\ programs \ Python27 \ lib \ re.py " (文字列) TypeError:予期しない文字列またはバッファ。現在は何が問題なのですか? – Learner

+0

出力はリスト(バッチ出力の行)であり、探している行は次のとおりです。私のコードを編集しました –

0

を解析するsubprocessや正規表現を組み合わせることができます。

呼ばれるコウモリの出力を解析し、終了せずに、必要な情報を取得することは容易ですコード。サブプロセスコマンドと通信メソッドを使用して、出力を解析することができます。が

あなたが "終了" コマンドを使用することができます:

exit /b %errorlevel% 

をそしてためERRORLEVELを使用するDOS側から

https://docs.python.org/2/library/subprocess.html

output=`dmesg | grep hda` 
# becomes 
p1 = Popen(["dmesg"], stdout=PIPE) 
p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE) 
p1.stdout.close() # Allow p1 to receive a SIGPIPE if p2 exits. 
output = p2.communicate()[0] 

:Pythonのヘルプで報告されているようにあなたのpurpouse。 、詳細は、をご覧ください:

http://www.computerhope.com/exithlp.htm

別のオプションとして(レジスタを使用し、それが揮発性ではない)コマンド「SETX」で変数を使用し、環境にある、またはファイル一時記憶装置。

関連する問題