使用命令行选项的os.execute()函数。

问题: 如何在 Lua 中执行带有三个命令行选项的操作系统命令?

我有一个连接到我的PC上的设备(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上找到了这里

我同情每个写那些问题的人。就像用户IDthatthing一样,我也尝试了...

  • 方括号
  • 引号(")
  • 单个和多个斜杠
  • 正斜杠和s/s

到目前为止,我找不到任何一个语法结构,它可以工作。

我自己唯一的“修复”(如果有的话)是编写八个不同的MS-DOS批处理文件,并给它们独特的名称。这使得机器事实上无法使用。

我如何让Lua执行此命令?

C:\Program Files (x86)\PowerUSB\pwrusbcmd 1 1 1
点赞
用户2504888
用户2504888

尝试使用以下命令 os.execute([["C:\Program Files (x86)\PowerUSB\pwrusbcmd" 1 1 1 ]])

我认为你的问题在于文件路径中的空格。

我知道你说你使用了方括号,但是我看不到你使用了哪种组合。这个命令对我有效。

2014-04-14 15:50:17
用户1009479
用户1009479

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

os.execute('"C:\\Program Files (x86)\\PowerUSB\\pwrusbcmd" 1 1 1')
2014-04-14 15:52:06