Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过python将参数传递到批处理文件_Python_Batch File - Fatal编程技术网

通过python将参数传递到批处理文件

通过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

我正在尝试将参数发送到批处理文件

我有一个批处理文件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" +
     "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”中的内容(例如,如果是变量)。