lua io.popen запустить программу с пробелом в пути - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь запустить эту программу, но постоянно получаю сообщение об ошибке.Я уже пытался сделать кавычки [== [] ==] вокруг строки и "" вокруг пути программы, но он все равно не работает.

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

Если я скопирую команду из печати (тест) и использую ее в cmd.exe, то она будет работать.

Спасибо за помощь:)

1 Ответ

0 голосов
/ 24 ноября 2018

В 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, эти дополнительные кавычки автоматически добавляются кодом, обрабатывающим ввод с клавиатуры.
Когда вы используете функцию Csystem функций Lua os.execute, io.popen, затем вы должны добавить дополнительные кавычки вручную.
Так работает CMD.EXE (и его дизайн полон не очень логичных решений).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...