【问题标题】:Batch - How to pass argument with quotes within other quotes批处理 - 如何在其他引号中传递带有引号的参数
【发布时间】:2015-07-06 11:03:30
【问题描述】:

我正在使用 dotCover 命令行工具对一些测试进行覆盖。 为了让它运行,它需要接收“目标可执行文件”的路径作为参数,在我的例子中是 Nunit,在我的例子中是“Target Arguments”是我传递给 Nunit 的参数。 问题是我传递给 Nunit 的参数之一是带有空格的路径。当我将 Nunit 的参数传递给 dotCover 时,它也被引号包围,因为它有空格。 因此,例如,为了简单地在 nunit 上运行测试,我运行以下命令:

"%NunitDir%\nunit-console-x86.exe" /nologo /noshadow "%DllDir%\Tests.dll" 
 /config=Release /domain=%Domain% /xml=%resultDir%\NUnitTestResults.xml

并且要对测试进行覆盖,我需要运行以下内容:

set NunitArgs=/nologo /noshadow "%DllDir%\Tests.dll" 
 /config=Release /domain=%Domain% /xml=%resultDir%\NUnitTestResults.xml

%dotCoverDir%\dotCover.exe cover /TargetExecutable="%NunitDir%\nunit-console-x86.exe" 
 /TargetArguments="%NunitArgs%" /Output="%outputDir%\NUnitTestResults.xml" 

问题是NunitArgs 已经包含引号,当我运行 dotCover 命令时,它只读取从第一个引号到第二个引号的参数。

【问题讨论】:

    标签: batch-file dotcover


    【解决方案1】:

    试试/TargetArguments="%NunitArgs:"=""%" 甚至/TargetArguments="""%NunitArgs:"=""%"""

    阅读How Command Line Parameters Are Parsed by David Deley © 2009 (Updated 2014)(尤其是Windows®: 4. Everyone Parses Differently)。祝你好运!

    【讨论】:

    • 谢谢,第一个选项有效,感谢您提供的链接。
    猜你喜欢
    • 2013-08-31
    • 2015-07-21
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-17
    • 2014-05-04
    相关资源
    最近更新 更多