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

Nex*_*ius 3 windows lua command-line

我正在尝试启动该程序,但不断收到错误消息。我已经尝试在字符串周围创建块引号 [==[]==] 并在程序路径周围创建“”,但它仍然不起作用。

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)
Run Code Online (Sandbox Code Playgroud)

运行lua文件时出错

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

谢谢您的帮助 :)

Ego*_*off 5

在 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)
Run Code Online (Sandbox Code Playgroud)

当您在 CMD.EXE 窗口中从键盘键入命令时,处理键盘输入的代码会自动添加这些附加引号。
当您使用 C 函数system或 Lua 函数时os.executeio.popen您必须手动添加额外的引号。
这就是 CMD.EXE 的工作原理(其设计充满了不太合逻辑的决策)。