2017-07-20 21 views
0

私は、再帰的にそのパターンに一致するすべてのファイルを検索しdir /s /b *.Tests.*.dllを使用することができますが、私はまた、彼らは\bin\Debug\の代わりに、\obj\Debug\または\bin\Releaseである場合にのみ、それらを見つける必要があります。再帰的に検索ファイルのバッチファイルで

だから私は、このコマンドを試してみました:

dir /s /b Tests\Unit\*\Debug\bin\*.Tests.*.dll 

しかし、それは私がこの問題に対処するが、1つが存在する場合は、私にそれを指してください以前のSOの質問を見つけることができませんでしたThe filename, directory name, or volume label syntax is incorrect.

で失敗します。

望ましい結果(パス全体にフィルタを適用する)を達成する方法はありますか?私の意図は、私がls -r ... | grep ... | xargs ...を使用しているだろうと私はここに似た何かを達成しようとしているLinux上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" 

からこのコマンドを使用して、ジェンキンスさんの下で私のプロジェクトでは、各ユニット・テスト・アセンブリ上のNUnitを実行するために、リストを使用することです。

私だけのようにも親フォルダに、この追加のフィルタを適用する必要があります。可能でない場合は、PowerShellを使用する必要があります。

+0

の開始点として、私は、ファイル名やファイルの拡張子を除いて、( '*')ワイルドカードで動作しますdir' 'とは思わないことを使用し – SteveFest

+0

また、 '* .Tests。*。dll'では' * .Tests 'を意味します。 * .dll'?スペースは大きな違いになります。最初の検索では、a.Test.b.dll(** one file!**)のようなファイルに一致します。 a.tests、b.dll – SteveFest

+0

Uhmm。ところで、あなたのスクリプトがどのフォルダとファイルに一致させたいのか分かりません。最初の文の「only」という言葉が私を混乱させました。 – SteveFest

答えて

0

私はDOS batch script with for loop and pipeを見つけ、そこにアイデアを使用して、私は、このコマンドを構築:

for /f %f in ('dir /s /b Tests\Unit ^| findstr \\bin\\Debug\\.*\.Tests\..*\.dll$"') do echo %f 

ありません私はバッチファイルのために%%f%fを交換する必要がある、と私はNUnitのを実行するためのコマンドでecho %fを置き換えることができます。 sourcedir1パート後\*\sourcedir2前に必要なパスの一部である

+0

を最初の文では解決策を見つけ、それを読み違え、申し訳ありません:( – SteveFest

+0

私はWindowsバッチスクリプトを意味します。 – sashoalm

1
FOR /d %%a IN ("%sourcedir1%\*") DO DIR /s /b "%%~a\%sourcedir2%\*.exe" 2>nul 

は単に%%aに順番に各DIRNAMEを割り当てると第二dir

関連する問題