【问题标题】:start cmd.exe from python and call a bat file with multiple parameters从 python 启动 cmd.exe 并调用具有多个参数的 bat 文件
【发布时间】:2014-07-11 17:20:18
【问题描述】:

我想加载 cmd.exe 并调用一个带有多个参数的 bat 文件。所有这些都来自python。

我的 bat 文件如下所示:

  @echo off
  call ifortvars.bat intel64
  cd %5
  abaqus job=#1 user=%2 cpus=%3 gpus=%4 interactive

我的python代码:

os.system("start cmd.exe /k C:/Users/username/desktop/file.bat" params)

地点:

params = [JobName, fname, str(numcpus), '1', 'C:/Abaqus_Jobs' + JobDir]

JobName = 'A2'
JobDir = 'Job1/input_files'
fnameUEL = 'routineUEL'
numcpus = 8

现在这段代码不起作用,因为params 是一个列表。如果我将其更改为:

os.system("start cmd.exe /k C:/Users/username/desktop/file.bat JobName  fname  str(numcpus)  '1'  'C:/Abaqus_Jobs' + JobDir)

它也不起作用。我读过 Windows 中的 cmd 有效:

Spaces in Program Path + parameters with spaces:
CMD /k ""c:\batch files\demo.cmd" "Parameter 1 with space" "Parameter2 with space""

但如果我尝试:

os.system("start cmd.exe /k ""C:/Users/username/desktop/file.bat" "JobName"  "fname" "str(numcpus)"  "1"  "'C:/Abaqus_Jobs' + JobDir"")

它也不起作用。有任何想法吗?谢谢!

【问题讨论】:

  • 看这里这可能会有所帮助stackoverflow.com/questions/1818774/…
  • @HankLapidez:我已经尝试使用Popen,它可以工作,但没有显示 cmd 窗口,我需要这个来查看可能的错误。
  • 如果你使用 popen,你可以通过管道将 stdout/stderr 传回 python 程序。不知道为什么需要查看 cmd 窗口。
  • 读取标准输出和标准错误。 stackoverflow.com/questions/2804543/…
  • 问题是我正在使用我的 python 脚本作为另一个程序的外部脚本。然后它使用我的 python 脚本,所以当程序运行时我看不到 python 终端。

标签: python batch-file parameters cmd


【解决方案1】:

解决了:

process = Popen(params , stdout=PIPE, stderr=PIPE, shell=True)

params = [['cmd', '/k', 'start', ....]]

【讨论】:

    猜你喜欢
    • 2014-04-18
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多