我有一个批处理脚本,它在执行后生成一个配置文件,生成的配置文件里面有一些数据。当我从命令提示符执行它时,如下所示,我得到了所需的输出:
C:/> start.bat
但是,如果我尝试从python脚本执行如下,或者即使我双击并执行它,我确实得到配置文件,但它不包含任何所需的数据,它只是在其中有'0':
import subprocess as sp
p= sp.Popen("C:/pathtobatch/start.bat",stdin=sp.PIPE, stdout = sp.PIPE, stderr=sp.PIPE)
在批处理脚本(start.bat)中,我实际上正在执行python脚本并将其数据检索到配置文件,如下所示:
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不能正常工作,如果我双击它,为什么它正常工作,如果我从命令提示符执行它。
答案 0 :(得分:1)
是否有可能得到'0',因为它是%errorlevel%?
的值我发现你的案子有两个问题:
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")