lua io.popen 带有路径空格的程序运行问题

我正在尝试启动这个程序,但始终出现错误。 我已经尝试使用 [==[]==] 将字符串和""括起来,以及程序路径周围,但仍然无法正常工作。

local test = string.format([==["C:\Program Files (x86)\Audacity\audacity.exe" "F:\Aufnahme %s.%s.%s\ZOOM0001.WAV"]==], tag, monat, jahr)

print(test)
io.popen(test)

运行 lua 文件时出现的错误

如果从 print(test) 中复制命令并在 cmd.exe 中使用它,则可以正常工作。

感谢您的帮助 :)

点赞
用户1847592
用户1847592

在 Windows 上,你必须在外层加上双引号来包裹你的命令行(程序+参数)。

local test = string.format([==["C:\Program Files (x86)\Audacity\audacity.exe" "F:\Aufnahme %s.%s.%s\ZOOM0001.WAV"]==], tag, monat, jahr)

test = '"'..test..'"'
print(test)
io.popen(test)

当你在 CMD.EXE 窗口中从键盘输入命令时,代码会自动添加这些额外的引号,以处理你的键盘输入。

当你使用 C 函数 system 或 Lua 函数 os.executeio.popen 时,你必须手动添加额外的引号。

CMD.EXE 的工作方式就是这样(它的设计充满了不太合理的决定)。

2018-11-24 05:48:19