批处理 - 如何在其他引号

时间:2015-07-06 11:03:31

标签: batch-file dotcover

我正在使用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命令时,它只读取从第一个引号到第二个引号的参数。

1 个答案:

答案 0 :(得分:2)

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

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