如何从.bat脚本获取返回值?

时间:2016-03-22 06:33:28

标签: python batch-file

我有一个.bat脚本,它正在计算进程的执行时间。如下:

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

现在,我想将“完成时间”返回到调用此.bat脚本的脚本的某个变量,但我不知道如何从.bat脚本返回值。请建议我如何实现它。

2 个答案:

答案 0 :(得分:1)

您可以合并subprocess和正则表达式来解析输出

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()

答案 1 :(得分:0)

从脚本方面:

很容易解析被调用的bat输出,并在没有退出代码的情况下获取所需的信息。您可以使用subprocess命令和communic方法来解析输出。正如python帮助中所报道的那样:

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]

从DOS端:

您可以使用"退出"命令:

exit /b %errorlevel%

使用errorlevel为你的purpouse。 有关更多信息,请查看:

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

另一种选择是使用命令" setx"和环境变量。 (使用寄存器并且它不是易失性的),或者使用文件作为临时存储。