通过python将参数传递到批处理文件
我正在尝试将参数发送到批处理文件 我有一个批处理文件HelloWorld.bat,它在脚本的不同点上总共要求4个输入。我尝试使用subprocess.Popen、subprocess.call和os.system,但无法传入参数。到目前为止,我得到的是:通过python将参数传递到批处理文件,python,batch-file,Python,Batch File,我正在尝试将参数发送到批处理文件 我有一个批处理文件HelloWorld.bat,它在脚本的不同点上总共要求4个输入。我尝试使用subprocess.Popen、subprocess.call和os.system,但无法传入参数。到目前为止,我得到的是: p = subprocess.Popen(shlex.split("cmd"), shell = True, stdin = subprocess.PIPE) p.communicate( "cd " + filepath + "\n
p = subprocess.Popen(shlex.split("cmd"), shell = True, stdin = subprocess.PIPE)
p.communicate(
"cd " + filepath + "\n" +
"HelloWorld.bat\n" +
"arg1\n" +
"arg2\n" +
"arg3\n" +
"arg4\n"
)
当我运行这段代码时,它指出错误的命令语法。我是否可以将参数传递给将在cmd中运行的批处理文件
谢谢 对于Windows,您不需要
shell=True
,只需按顺序传递参数,如下所示:
executable = os.path.join(filepath, 'HelloWorld.bat')
p = subprocess.Popen([executable, 'arg1', 'arg2', 'arg3', 'arg4'])
关于子流程模块,有很多信息,我建议您仔细阅读,因为如果您不小心的话,您可以很容易地使用系统。您不需要
shell=True
对于Windows,您只需按顺序传递参数,如下所示:
executable = os.path.join(filepath, 'HelloWorld.bat')
p = subprocess.Popen([executable, 'arg1', 'arg2', 'arg3', 'arg4'])
关于子流程模块,有很多信息,我建议您仔细阅读,因为如果不小心,您可以很容易地对系统进行软管连接。非常感谢!现在我得到了一些东西。但是,我在传递参数时仍然遇到一个问题,当我传递参数时,它会说“命令的语法不正确”。是否有一些格式问题我没有注意到?取决于“args2”中的内容(例如,如果它是一个变量)。非常感谢!现在我得到了一些东西。但是,我在传递参数时仍然遇到一个问题,当我传递参数时,它会说“命令的语法不正确”。是否存在一些我没有捕捉到的格式问题?取决于“args2”中的内容(例如,如果是变量)。