Lua与操作系统中的空白

Lua与操作系统中的空白,lua,whitespace,Lua,Whitespace,之后,我使用[[]]将命令放入系统。问题如下:相同的结构: 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|m

之后,我使用
[[]]
将命令放入系统。问题如下:相同的结构:

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...
第二个运行良好


如何解决此问题?

我也没有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 ]];
我担心它不起作用,因为
[[[
]
将阻止转义的解释,但这可能会随着它从一个变量到另一个变量再到
操作系统而改变。执行
。另一个选项是使用这些文件的windows版本,不带空格,例如:

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

我不知道这是否是原因,但在第一种情况下,树字符串之间不需要空格吗?是的,我在编辑这篇文章时错过了空格,但这不是导致此错误的原因:(我这里没有窗口,所以我无法真正测试此错误,抱歉。本地程序=[[c:\Archiv~1\Automa~1\TestCo~1\Bin\TestComplete.exe]];这很好,在我找到一个更好的解决方案之前它会一直工作:)请注意,这不是Lua问题。尝试从cmd shell运行相同的命令。你必须逃离空间。