首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Python subprocess.call将变量传递到BAT文件

使用Python subprocess.call将变量传递到BAT文件
EN

Stack Overflow用户
提问于 2018-07-31 04:22:15
回答 1查看 756关注 0票数 -2

当我使用以下代码将变量传递给BAT文件时:

代码语言:javascript
复制
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文件

代码语言:javascript
复制
echo %1
echo %2

BAT文件输出

代码语言:javascript
复制
f:\_Python>echo UID
UID

f:\_Python>echo PSWD
PSWD

f:\_Python>
EN

回答 1

Stack Overflow用户

发布于 2018-07-31 04:30:00

您正在调用一个shell来运行start,它将运行一个CMD来运行您的BAT文件!

这意味着您想要运行子进程,但最终却启动了FOUR

  • 请勿使用shell=True
  • 请勿使用start除非您确实需要
  • 请勿执行CMD

通过这样做,您只需将您的参数作为列表传递,它就会工作:

代码语言:javascript
复制
dir = r"f:\_Python"
cmdline = ["setENVvariables.bat", UID, PSWD]
rc = call(cmdline, cwd=dir)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51601761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档