FOR /F を使用して、任意のコマンドの結果を反復します (反復ごとに 1 行)。詳細については、コマンドプロンプトからHELP FOR
またはFOR /?
を入力してください。
再帰的な FINDSTR /S
オプションを使用しているため、出力にはパス情報も含まれる場合があります。
パスや拡張子なしで本当に名前だけが必要な場合は、次のようにします。
for /f "eol=: delims=" %%F in (
'findstr /s /i /m "@isTest" *.cls'
) do (echo ^<runTest^>%%~nF^</runTest^>) >>output.xml
修飾子は値の~n
名前だけを保持し、パスと拡張子の情報を破棄します。<
特殊文字をエスケープした方法に注意してください>
。したがって、それらはリダイレクト演算子として扱われません。
パスと名前を保持し、拡張子のみを削除する場合は、次のようにします~dpn
。
for /f "eol=: delims=" %%F in (
'findstr /s /i /m "@isTest" *.cls'
) do (echo ^<runTest^>%%~dpnF^</runTest^>) >>output.xml
上記は、FINDSTR によって提供される相対パスを完全なパスに展開します。
相対パスのみを保持する場合は、FOR 変数修飾子を使用する代わりに、部分文字列操作を行う必要があります。ループ内で遅延拡張のオンとオフを切り替えて!
、ファイル名に表示される可能性のあるものを保持します。
for /f "eol=: delims=" %%F in (
'findstr /s /i /m "@isTest" *.cls'
) do (
set "file=%%F"
setlocal enableDelayedExpansion
(echo ^<runTest^>!file:~0,-4!^</runTest^>)
endlocal
) >>output.xml