【发布时间】:2017-12-26 08:02:11
【问题描述】:
我可以使用dir /s /b *.Tests.*.dll 递归查找与该模式匹配的所有文件,但仅当它们位于\bin\Debug\ 而不是\obj\Debug\ 或\bin\Release 时,我才需要找到它们。
所以我尝试了这个命令:
dir /s /b Tests\Unit\*\Debug\bin\*.Tests.*.dll
但它失败了The filename, directory name, or volume label syntax is incorrect.
我之前找不到任何解决此问题的 SO 问题,但如果存在,请指出我。
有什么方法可以达到预期的效果(在整个路径上应用过滤器)?我的意图是使用该列表在 jenkins 下的项目中的每个单元测试程序集上运行 NUnit,使用来自 Use NUnit Console Runner to run all tests under a folder 的此命令
for /f %%f in ('dir .\test\ /b /s *.Test.dll') do nunit-console /nologo /noshadow /framework:net-4.0 /xml:.\test\TestResults.xml "%%f"
在 linux 上,我会使用 ls -r ... | grep ... | xargs ...,我正在尝试在这里实现类似的目标。
我也只需要在父文件夹上应用这个额外的过滤器。如果不可能,我将不得不使用 PowerShell。
【问题讨论】:
-
我认为
dir不能与通配符(*) 一起使用,除了文件名或文件扩展名 -
另外,
*.Tests.*.dll中的意思是*.Tests. *.dll?空间有很大的不同。第一个搜索可以匹配如下文件:a.Test.b.dll(一个文件!),第二个匹配。 a.tests, b.dll -
嗯。顺便说一句,我不明白您的脚本想要匹配哪些文件夹和文件。第一句中的
only这个词让我很困惑。 -
我写了
*.Tests.*.dll。你在哪里看到空间? -
哦,太好了。我困了……看错了,对不起:(
标签: windows batch-file recursion