[英]Executing Batch File From C++ with Spaces in the Path
我想使用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 ++的问题,因此以下是一种c ++解决方案,该方法如何正确实现您的函数:
#include <sstream>
int executeBatch(const char* fullBatchFileName)
{
std::ostringstream oss;
oss << '\"' << fullBatchFileName << '\"';
return system(oss.str().c_str());
}
现在不要将其设为XY问题! 我认为您应该已经从这些示例中了解了原理:将批处理文件名包装在一对双引号字符( '\\"'
)中,以使Shell能够正确解释它。还有一些纯c库方法可用于实现这一点(请参见<cstring>
),但是如果可以使用c ++标准库,我将不推荐这些。
尝试在命令行周围添加转义的双引号,即
system("\"C:\\Users\\500543\\Documents\\Batch File Project\\Testing.bat\"");
您需要转义引号:
system("\"C:\\Users\\500543\\Documents\\Batch File Project\\Testing.bat\"");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.