回答:
バッチファイルは2つのコマンドを実行する必要があります。1つはファイルをクリアし、もう1つは子ディレクトリを削除します。削除したいディレクトリはC:\Share\
バッチファイルは次のようになります。
del /s /f /q c:\share\*.*
for /f %%f in ('dir /ad /b c:\share\') do rd /s /q c:\share\%%f
del /s /f /q
確認を求めることなく、ディレクトリツリーを再帰的に検索して、ファイル(読み取り専用ファイルも含む)を削除します。
2行目はすべてのサブディレクトリ(空になっているはずです)をループし、それらを削除します。
フォルダ全体を削除して再作成する(アクセス許可のためにやりたくないと思いますか?)これは、フォルダをきれいにする最も簡単な方法です。
del
必要ありません。rd/s/q
ファイルとサブフォルダーの両方を削除します。
del
主にルートフォルダー内のファイルに存在しますが、再帰スイッチを削除できます。
どう?
rmdir /S /Q "target"
mkdir "target
編集:もちろん、このソリューションは、一時的なフォルダーの不在を許容できる場合にのみ適用されます。
for /f
似ている場合よりも簡単で読みやすいと思いました。ただ共有したかった
for /f "delims=" %%f in ('dir /ad /b c:\share\') do rd /s /q c:\share\%%f
サブディレクトリにスペースを含む他のディレクトリが含まれている場合、これは機能しません。
これを機能させるには、次のように最終的な文字列を引用する必要がありました
/ f "delims =" %% f in( 'dir / ad / bc:\ share \')do rd / s / q "c:\ share \ %% f"
どうやら、これにより、コマンドは文字列自体ではなく、引用符付き文字列で動作します。
すべてのサブフォルダーを削除する必要があるフォルダーでこれを試してみますが、ルート(およびルート内のファイル)はそのまま残します:for / D%v in(*)do rd / s / q%v
/ Dはディレクトリに一致し、rd / s / qはそれぞれを削除します