Lua и пробелы в ОС - PullRequest
       28

Lua и пробелы в ОС

0 голосов
/ 12 апреля 2011

После чтения этого поста я использовал [[ ]] для ввода команд в систему.Проблема заключается в следующем: та же структура:

local Program = [["c:\Archivos de programa\Automated QA\TestComplete 8\Bin\TestComplete.exe" ]];
local testcase = [["C:\svn_test\trunk\Automation\XMM\XMM.pjs" ]];
local options = [[/r /exit /p:XMMGeneralTest /t:"Script|main|Main" ]];

local cmd = Program..testcase..options;
print(cmd);
os.execute(cmd);

local tcLog = [[ C:\svn_test\trunk\Automation\XTYLE\XTyleGeneralTest\Log\11_04_2011_12_40_06_264\*]];
local zippedFile = "11_04_2011_12_40_06_264.7z ";
local sevenZip = [["c:\Archivos de Programa\7-Zip\7z.exe" a -t7z ]];

local cmd = sevenZip..zippedFile..tcLog;
print(cmd);
os.execute(cmd);

Один и тот же код дает разные результаты.Первый не запускается:

"c:\Archivos" not recognized as internal command or external,
program...

Второй работает отлично.

Как мне решить эту проблему?

1 Ответ

1 голос
/ 12 апреля 2011

У меня также нет системы Windows для тестирования, так что это всего лишь предположение:

Попробуйте заменить это:

local Program = [["c:\Archivos de programa\Automated QA\TestComplete 8\Bin\TestComplete.exe" ]];

с этим:

local Program = [[c:\\Archivos\ de\ programa\\Automated\ QA\\TestComplete\ 8\\Bin\\TestComplete.exe ]];

Я боюсь, что это не сработает, поскольку [[ и ]] заблокируют интерпретацию escape-символов, но это может измениться при переходе от одной переменной к другой и затем к os.execute. Другой вариант - использовать версию этих файлов для Windows без пробелов, например ::

local Program = [[c:\Archiv~1\Automa~1\TestCo~1\Bin\TestComplete.exe ]];
...