我有一个.bat脚本,它正在计算进程的执行时间。如下:
set startTime=%time%
YourApp.exe
echo Start Time: %startTime%
echo Finish Time: %time%
现在,我想将“完成时间”返回到调用此.bat脚本的脚本的某个变量,但我不知道如何从.bat脚本返回值。请建议我如何实现它。
答案 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"和环境变量。 (使用寄存器并且它不是易失性的),或者使用文件作为临时存储。