带有命令行选项的os.execute()

时间:2014-04-14 15:38:55

标签: windows lua

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

我的设备已连接到我的电脑。 (Windows 7,USB电缆,典型企业)

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

C:\Program Files (x86)\PowerUSB\

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

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

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:3)

您忘记在命令名称周围添加双引号,最简单的方法是使用单引号字符串:

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