私は複数のプロジェクトで作業しており、「bin」または「obj」という名前のすべてのフォルダーを再帰的に削除し、すべてのプロジェクトですべてが再構築されることを確信したいと考えています (場合によっては、これが Visual Studio に以前のビルドをすべて忘れさせる唯一の方法です)。
.NET プログラムを書かずに、これを簡単に実現する方法 (たとえば、.bat ファイルを使用) はありますか?
ベストアンサー1
これは、使用するシェルによって異なります。
Windows で cmd シェルを使用している場合は、以下が機能するはずです。
FOR /F "tokens=*" %%G IN ('DIR /B /AD /S bin') DO RMDIR /S /Q "%%G"
FOR /F "tokens=*" %%G IN ('DIR /B /AD /S obj') DO RMDIR /S /Q "%%G"
bash または zsh タイプのシェル (Windows の git bash や babun、またはほとんどの Linux / OS X シェルなど) を使用している場合は、次の方法の方がはるかに適切で簡潔な方法で目的を達成できます。
find . -iname "bin" | xargs rm -rf
find . -iname "obj" | xargs rm -rf
これは OR を使って 1 行に短縮できます。
find . -iname "bin" -o -iname "obj" | xargs rm -rf
ファイル名のディレクトリにスペースや引用符が含まれている場合、find はそれらのエントリをそのまま送信し、xargs はそれを複数のエントリに分割する可能性があることに注意してください。シェルがそれらをサポートし、この欠点を回避する場合-print0
、-0
上記の例は次のようになります。
find . -iname "bin" -print0 | xargs -0 rm -rf
find . -iname "obj" -print0 | xargs -0 rm -rf
そして:
find . -iname "bin" -o -iname "obj" -print0 | xargs -0 rm -rf
Powershell を使用している場合は、以下を使用できます。
Get-ChildItem .\ -include bin,obj -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse }
に見られるようにロバートHの回答は以下- 何かに賛成票を投じる場合は、PowerShell の回答に対して私ではなく彼にクレジットを与えるようにしてください :)
もちろん、最初に安全な場所で選択したコマンドを実行してテストするのが賢明です。