【问题标题】:Passing arguments into batch file via python通过python将参数传递到批处理文件
【发布时间】:2014-06-11 07:21:01
【问题描述】:

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

我有一个批处理文件 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 中运行的批处理文件吗?

谢谢!

【问题讨论】:

    标签: python batch-file


    【解决方案1】:

    对于 Windows,您不需要 shell=True,您可以简单地按顺序传递参数,如下所示:

    executable = os.path.join(filepath, 'HelloWorld.bat')
    p = subprocess.Popen([executable, 'arg1', 'arg2', 'arg3', 'arg4'])
    

    documentation 上有很多关于子进程模块的信息,我建议您仔细阅读它,因为如果您不小心,您可以轻松地使用系统。

    【讨论】:

    • 非常感谢!现在我得到了一些东西。但是,我在传递参数时仍然遇到问题,当我传递它时,它说“命令的语法不正确”。是否有一些我没有发现的格式问题?
    • 取决于 'args2' 中的内容(例如,如果它是一个变量)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多