我想使用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\""
答案 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++的问题,这里有一个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\"");