文件名、目录名或卷标语法不正确

The filename, directory name, or volume label syntax is incorrect system call from qt creator c++

本文关键字:语法 不正确 文件名      更新时间:2023-10-16

当我从命令行运行命令C:My ProgramsCPU AnalysisscriptsruinIODump.bat时,命令运行良好,但是当我从qt creator中运行命令时:

system("""C:\My Programs\CPU Analysis\generateSanity_Scripts\runIODump.bat"" ""C:/My Programs/CPU Analysis/iodump/065901_iodump.txt""")

我得到错误:The filename, directory name, or volume label syntax is incorrect.

我试过直接通过system()命令在.bat文件中运行命令,我试过改变引号,我试过使用转义字符,但我一直得到同样的错误。我怎么能得到。bat文件从qt creator运行?我看了其他类似的问题,但没有一个回答我的问题。

你的问题是分隔符,正如MCDC所说。

我建议使用QProcessQDir::toNativeSeparators,例如:

const QString app = QDir::toNativeSeparators("C:/My Programs/CPU Analysis/generateSanity_Scripts/runIODump.bat");
const QString params = QDir::toNativeSeparators("C:/My Programs/CPU Analysis/iodump/065901_iodump.txt");
QProcess process;
QObject::connect(&process, SIGNAL(error(QProcess::ProcessError)), this, SLOT(myError(QProcess::ProcessError)));
QObject::connect(&process, SIGNAL(stateChanged(QProcess::ProcessState)), this, SLOT(myState(QProcess::ProcessState)));
QObject::connect(&process, SIGNAL(finished(int)), this, SLOT(myEnd(int)));
process.start(app, QStringList() << params);

Qprocess是Async,得到QObject::connect的结果(见示例)

这将避免"分隔符"的问题

system(""C:\My Programs\CPU Analysis\generateSanity_Scripts\runIODump.bat" "C:\My Programs\CPU Analysis\iodump\065901_iodump.txt"");

我认为你有太多的引号和一些错误的斜杠