【问题标题】:trouble passing parameters to console application将参数传递给控制台应用程序时遇到问题
【发布时间】:2015-03-28 17:48:55
【问题描述】:

我无法使用 qprocess 从 Windows 命令行正确启动 cloc 1.62。这是我所拥有的:

具有 cloc 识别的所有语言的 QStringList;

QStringList languages;
languages<<"\"ABAP\""<<"\"ActionScript\""<<"\"Ada\""<<"\"ADSO/IDSM\""<<"\"AMPLE\""<<"\"Ant\""<<"\"Apex Trigger\"";                                    

然后我创建一个 qstring,由列表的所有元素组成,用逗号分隔,除了一个,它存储在 lang 变量中;

QString langsinuse;

                 for (int i=0;i<languages.length();i++)
                 {
                     if (languages.at(i) != lang)
                     {
                         if (langsinuse.isEmpty())
                         {
                             langsinuse=langsinuse+languages.at(i);
                         }
                         else
                         {
                             langsinuse=langsinuse+','+languages.at(i);
                         }
                     }
                 }

然后我构建一个参数字符串列表并启动该过程:

QStringList arguments;
QProcess cloc;
QString params="cloc-1.62.exe --xml --by-file --report-file="+
list1.at(1).trimmed()+'/'+name+'/'+"report.xml"+" --exclude-lang="+langsinuse+" "+distr;
arguments<<"/k"<<params;
cloc.startDetached("cmd.exe",arguments,"cloc/");

但不知何故,语言名称中的空格不被视为转义,并且由空格分隔的每个单词都被视为 cloc 的不同参数,即使两个单词都在双引号中(例如“\”Apex Trigger\“”)和时钟产生一堆错误。

(50 个错误:

无法读取:触发器","Arduino

无法读取:Sketch","ASP","ASP.Net","Assembly","AutoHotkey","awk","Bourne)

当您没有在 --exclude-lang= 选项中添加包含空格的语言名称时会发生错误(例如 --exclude-lang=Apex 触发器会导致错误,- -exclude-lang="Apex Trigger" 不会)

但是,如果我只是保存我在 qt 中构建的整个命令并将其保存在某个批处理文件中,它运行得很好。

我在正确转义双引号时遗漏了什么吗?

【问题讨论】:

    标签: qt cmd qprocess cloc


    【解决方案1】:

    好的,我只需要单独传递参数,而不是作为单个字符串。

    arguments<<"/k"<<"cloc-1.62.exe" <<"--xml"<<"--by-file"<<"--report-file="+
    list1.at(1).trimmed()+'/'+name+'/'+"report.xml"<<"--exclude-lang="+langsinuse<<distr;
    

    【讨论】:

      猜你喜欢
      • 2012-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多