当我使用以下代码将变量传递给BAT文件时:
from subprocess import call
# Prompt for UID
UID = raw_input('Enter UID: ')
# Prompt for password
PSWD= raw_input('Enter your password: ')
dir = r"f:\_Python"
cmdline = "setENVvariables.bat UID, PSWD"
rc=call("start cmd /K " + cmdline, cwd=dir, shell=True)
。。不会传递这些值。当我在BAT文件中回显输入时,我得到了Python变量名
BAT文件
echo %1
echo %2
BAT文件输出
f:\_Python>echo UID
UID
f:\_Python>echo PSWD
PSWD
f:\_Python>
发布于 2018-07-31 04:30:00
您正在调用一个shell来运行start,它将运行一个CMD来运行您的BAT文件!
这意味着您想要运行子进程,但最终却启动了FOUR!
shell=True
start
除非您确实需要通过这样做,您只需将您的参数作为列表传递,它就会工作:
dir = r"f:\_Python"
cmdline = ["setENVvariables.bat", UID, PSWD]
rc = call(cmdline, cwd=dir)
https://stackoverflow.com/questions/51601761
复制相似问题