C 如何在传递到system()时克服路径中的空格?
在以下声明中:C 如何在传递到system()时克服路径中的空格?,c,C,在以下声明中: system("%TESTCASES_PATH%SIP\\test.bat"); %TESTCASES\u路径%已解析为C:\Program Files 因此,调用系统的结果是: “C:\Program”未被识别为内部或外部命令 “C:\Program”被视为可执行文件 如何克服上述问题 编辑:尝试一下答案中的建议,我会看到同样的行为。以下是实际代码: #include <stdio.h> #include<conio.h> int main() {
system("%TESTCASES_PATH%SIP\\test.bat");
%TESTCASES\u路径%已解析为C:\Program Files
因此,调用系统的结果是:
“C:\Program”未被识别为内部或外部命令
“C:\Program”被视为可执行文件
如何克服上述问题
编辑:尝试一下答案中的建议,我会看到同样的行为。以下是实际代码:
#include <stdio.h>
#include<conio.h>
int main()
{
system("\"%TESTCASES_PATH%SIP\\Provisioning\\CrHomeDnOfficeCodeDestCodeBySoap\\CreateHomeDnOfficeCode.bat\"");
//system("\"%TESTCASES_PATH%SIP\\tests.bat\"");
getch();
return 0;
}
使用双引号将整个路径作为可执行文件/批处理文件传递:
system("\"%TESTCASES_PATH%SIP\\test.bat\"");
否则,空格后面的内容将成为第一个命令行参数
编辑:可能在您的设置中,%TESTCASES\u PATH%未由系统函数展开。在大多数系统上,可以使用getenv检索环境变量的值:
使用双引号将整个路径作为可执行文件/批处理文件传递:
system("\"%TESTCASES_PATH%SIP\\test.bat\"");
否则,空格后面的内容将成为第一个命令行参数
编辑:可能在您的设置中,%TESTCASES\u PATH%未由系统函数展开。在大多数系统上,可以使用getenv检索环境变量的值:
那么:
system("\"%TESTCASES_PATH%SIP\\test.bat\"");
字符串中的附加双引号允许将带空格的文件名传递给系统调用。关于:
system("\"%TESTCASES_PATH%SIP\\test.bat\"");
字符串中的附加双引号允许将带空格的文件名传递给系统调用。两种解决方案都有一个警告:使用不包含空格的字符串测试它们
它可能会在某些windows shell上失败。两种解决方案都有一个警告:使用不包含空格的字符串测试它们
它可能会在某些windows外壳上失败。@Prabhu。S:也许你必须自己展开环境变量来回答这个问题edited@Prabhu. S:也许你必须自己展开环境变量