【问题标题】:Function to execute batch file C++执行批处理文件C++的函数
【发布时间】:2013-07-11 17:21:32
【问题描述】:

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

【问题讨论】:

  • 如果您不打算更改它,请不要使用非常量 char *
  • 只需使用std::string 即可快速轻松地完成此操作,不过我建议使用旨在打开文件而不是执行任意命令的 API。

标签: c++ batch-file cmd


【解决方案1】:

我假设你想要这样的东西:

void executeBatch(char* BatchFile){
string cmd(BatchFile)
string expandCmd = string("\"") + cmd + string("\"");
system(expandCmd.c_str());
}

【讨论】:

  • 是的,但这不起作用。一方面,它在""\" + cmd + "\""; 下划线,并说\ 是一个无法识别的标记。它还强调了expandCmd,并说它不适合,因为它不是const char*
  • 我同意,抱歉我不在电脑前。编辑了我的答案!希望它应该工作,有很多方法可以附加字符串。
  • 哦发现了我刚把第一个问题改成expandCmd = '\"' + cmd + '\"';
猜你喜欢
  • 2013-03-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-24
  • 2012-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多