使用路径中的空格从C ++执行批处理文件

时间:2013-07-11 15:39:54

标签: c++ batch-file cmd

我想使用system()执行批处理文件,文件的路径将传递给函数,所以它看起来像这样:

void executeBatch(char* BatchFile){
    system(BatchFile);
}

现在问题是传入的路径没有用于忽略空格的转义引号,例如用户输入的内容:

"C:\\Users\\500543\\Documents\\Batch File Project\\Testing.bat"

如何在传入的路径中添加转义引号?

所以我特意改变:

"C:\\Users\\500543\\Documents\\Batch File Project\\Testing.bat"

"\"C:\\Users\\500543\\Documents\\Batch File Project\\Testing.bat\""

3 个答案:

答案 0 :(得分:1)

尝试

system("\"C:\\Users\\500543\\Documents\\Batch File Project\\Testing.bat\"");

至于您的评论中的其他问题,您必须使用:

char* it = "\"C:\\Users\\500543\\Documents\\Batch File Project\\Testing.bat\"";

system(it);

然后

至于你编辑过的问题,既然你已经标记了要使用的问题,这里有一个c ++解决方案如何正确实现你的功能:

#include <sstream>

int executeBatch(const char* fullBatchFileName)
{
    std::ostringstream oss;

    oss << '\"' << fullBatchFileName << '\"';
    return system(oss.str().c_str());
}

现在不要把它变成XY问题!我认为你应该理解这些样本的原理:只需将批处理文件名包装在一对双引号字符中{{1 shell,可以正确解释它。 还有一些纯c库方法可以实现这一点(参见'\"'),但如果你可以使用c ++标准库,我不推荐这些。

答案 1 :(得分:0)

尝试在命令行周围添加转义双引号,即

system("\"C:\\Users\\500543\\Documents\\Batch File Project\\Testing.bat\"");

答案 2 :(得分:0)

您需要转义引号:

     system("\"C:\\Users\\500543\\Documents\\Batch File Project\\Testing.bat\"");