Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

lua io.popen run program with space in path

I'm trying to get this program to start but I keep getting an error. I've already tried to make the blockquotes [==[]==] around the string and "" around the program path but it still doesn't work.

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)

error when running the lua file

If I copy the command from the print(test) and use that in cmd.exe it works.

Thanks for the help :)

like image 438
Nexarius Avatar asked Jul 03 '26 04:07

Nexarius


1 Answers

On Windows, you must enclose your command line (program + arguments) in additional outer-level quotes.

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)

When you are typing the command from keyboard in CMD.EXE window, then these additional quotes are added automatically by the code that is processing your keyboard input.
When you're using C function system or Lua functions os.execute, io.popen then you must add additional quotes manually.
This is how CMD.EXE works (and its design is full of not-very-logical decisions).

like image 174
Egor Skriptunoff Avatar answered Jul 05 '26 00:07

Egor Skriptunoff



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!