【问题标题】:os.execute() with command line optionsos.execute() 带有命令行选项
【发布时间】:2014-05-28 15:52:03
【问题描述】:

问题:如何在 Lua 中使用三个命令行选项执行 OS 命令?

我有一台设备连接到我的电脑。 (Windows 7、USB 电缆、典型企业)

控制设备的软件位于此处...

C:\Program Files (x86)\PowerUSB\

可执行文件的名称(又名“Program”)是...

pwrusbcmd

该程序需要三个单个数字参数,1 或 0,用空格分隔

我打开了一个命令提示框,切换到那个目录,测试了所有 8 种情况。一切正常。

然后我切换到另一个子目录,并尝试了这个命令......

"C:\Program Files (x86)\PowerUSB\pwrusbcmd" 1 1 1 

这也很好。

所以我认为执行该命令的 Lua 命令可以是......

 os.execute("C:\Program Files (x86)\PowerUSB\pwrusbcmd 1 1 1 ")

 os.execute("C:\\Program Files (x86)\\PowerUSB\\pwrusbcmd 1 1 1")

Lua 运行每个,没有任何抱怨,但是, 设备上没有发生任何操作。

所以我尝试改变命令本身的结构,用".." 连接整个字符串的两个部分,像这样......

 os.execute("C:\\Program Files (x86)\\PowerUSB\\pwrusbcmd".." 1 1 1 ")

还是没有动作。

我在 StackOverflow 上看了这里,发现

我对每个写这些问题的人表示同情。很像用户 ID thatthing,我也试过..

  • 方括号
  • 引号 (")
  • 单反斜杠、双反斜杠和三反斜杠
  • 前斜线和 s (/s)

到目前为止,我找不到一个有效的语法结构。

我可以自己编造的唯一“修复”(如果有的话就误称)是编写八个不同的 MS-DOS bat 文件,并为它们指定唯一的名称。这使机器实际上无法使用。

如何让 Lua 执行这个命令???

C:\Program Files (x86)\PowerUSB\pwrusbcmd 1 1 1

【问题讨论】:

    标签: windows lua


    【解决方案1】:

    你忘了在命令名两边加上双引号,最简单的方法是使用单引号字符串:

    os.execute('"C:\\Program Files (x86)\\PowerUSB\\pwrusbcmd" 1 1 1')
    

    【讨论】:

      【解决方案2】:

      试试os.execute([["C:\Program Files (x86)\PowerUSB\pwrusbcmd" 1 1 1 ]])

      我相信你的问题是文件路径中的空格。

      我知道您说您使用了方括号,但我看不出您使用了哪种组合。这对我有用。

      【讨论】:

      • 好的,所以于浩使用单引号将整个内容包裹起来,而您使用了两个方括号。这是否记录在lua.org 或其他地方?谢谢你能指点我。
      猜你喜欢
      • 2014-02-11
      • 2012-06-06
      • 2011-09-17
      • 1970-01-01
      • 2019-10-11
      • 1970-01-01
      • 2012-10-26
      • 2012-05-12
      • 1970-01-01
      相关资源
      最近更新 更多