Path 如何使用相对路径为OpenCover for MSTest编写批处理文件,使其独立于机器?

Path 如何使用相对路径为OpenCover for MSTest编写批处理文件,使其独立于机器?,path,mstest,opencover,Path,Mstest,Opencover,我使用以下格式从cmd运行MSTest的OpenCover代码覆盖率: C:\> \Your\OpenCover\Path\OpenCover.Console.exe -target:"\Your\Path\Here\MSTest.exe" -targetargs:"/testcontainer:\Your\DLL\Path\bin\Debug\TestProject.dll" -output:\Your\Output\File.xml -register:user 和下面的命令来运行报

我使用以下格式从cmd运行MSTest的OpenCover代码覆盖率:

C:\> \Your\OpenCover\Path\OpenCover.Console.exe -target:"\Your\Path\Here\MSTest.exe" -targetargs:"/testcontainer:\Your\DLL\Path\bin\Debug\TestProject.dll" -output:\Your\Output\File.xml -register:user
和下面的命令来运行报告生成器,以便从OpenCover生成的xml文件生成报告:

C:\ReportGenerator\bin\ReportGenerator.exe -reports:"C:\Reports\MSTest\projectCoverageReport.xml" -targetdir:"C:\Reports\CodeCoverage"
它工作正常,但OpenCover.exe、MSTest.exe、ReportGenerartor.exe等的路径始终取决于机器,我们如何使它们相对,以便创建通用批处理文件以从任何机器运行这些命令?

您可以使用“forfiles”命令以递归方式搜索目录中指向这些特定文件的路径。下面的示例将搜索您输入的驱动器号:

for %%i in (c:\, d:\, e:\, ......) do if exist %%i (
    for /f "tokens=*" %%a in ('forfiles /p %%i /m OpenCover.Console.exe /s /c "cmd /c echo @path"') do set openCover=%%a
    for /f "tokens=*" %%b in ('forfiles /p %%i /m MSTest.exe /s /c "cmd /c echo @path"') do set msTest=%%b
)
从这里,您可以调用以下变量:

    %openCover% -target:%msTest% ...etc