Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何在传递到system()时克服路径中的空格?_C - Fatal编程技术网

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:也许你必须自己展开环境变量