gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 04:16:44 25 4
gpt4 key购买 nike

我想使用 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\""

最佳答案

尝试

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 问题! 我想您应该已经从这些示例中理解了原理:只需将您的批处理文件名包含在一对双引号字符 ( '\"' ),shell 可以正确解释它。也有纯 c 库方法可用于实现此目的(请参阅 <cstring> ),但如果您可以使用 c++ 标准库,我不推荐这些方法。

关于c++ - 使用路径中的空格从 C++ 执行批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17597752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com