2011-01-21 10 views
30

私はディレクトリ構造/ foo/bar/fooBar/..を持っています。私はfooディレクトリまでのパスを記述できるWindowsコマンドを書いて、/ fooのすべてのファイルとディレクトリを再帰的に削除しますが、fooディレクトリは削除しないでください。ファイルを再帰的に削除する方法

私はrmdir /q /s [path to foo]を使用していましたが、このコマンドはfooディレクトリも削除します。これを達成するためのコマンドがあれば教えてください。

+0

何CDの場合に/パス/に/ fooのは、rmdirを実行する前に? – BigMike

+3

デル/ *の.xmlファイルのWindows 10で 作品 – JenonD

+0

可能な重複S [何これまでDELTREEに起こった、そして何がその代替?](http://stackoverflow.com/questions/338895/what-ever-happened-to- deltree-and-whats-its-replacement) –

答えて

42
rd /s /q /path/to/foo 
md /path/to/foo 
+0

私はいくつかのネストされたフォルダといくつかのファイルが読み込み専用であった。これは、私が期待していたものだけを除いて、すべてを削除しました。これは、読み取り専用ファイルに遭遇したときにプロセスを停止するWindows Server 2003の機能よりも優れていました。ありがとう! –

2

deltree/foo/*は正常に動作するはずです。

+1

Windows XPでdeltreeコマンドを使用できないほど残念です。 – Akshay

+0

その後、@ Ferruccioの解決策を講じてください。 –

+0

win7 x64で動作しません – m1m1k

7
del /f /s /q DirectoryWhichContainsFilesToDelete/\* 

これは、フォルダ自体を削除せずに、フォルダDirectoryWhichContainsFilesToDelete内のすべてのファイルを削除します。 楽しいことがあります:)

+3

DirectoryWhichContainsFilesToDelete内の**ディレクトリ**を削除しません。 –

+0

これは私の目的のために働いた。 –

1

私はこれを過去にバッチファイルで使用しました。 forループを使用してディレクトリ構造をナビゲートします。

ここでは、あるブランチから別のブランチにコピーするときに必要な、ツリーからcvsサブディレクトリを削除します。

@echo off 
if /I exist CVS. rd CVS /s /q >nul 
for /F %%z in ('dir cvs /ad /s /b') do echo %%z && rd /s /q %%z 
echo Batchfile %0 is complete 
6

私はこれも私の頭を傷つけていました。 rmdirを使用するforループを作成するだけでも簡単ですが、ロングネームにスペースを含むフォルダが残されます。ディレクトリリストを操作して8.3のファイル名を取得することは可能ですが、ここではもっと簡単な解決法です。

空のフォルダを作成します。

robocopy \empty_folder \folder_with_sub_folders /PURGE 

すべてのサブフォルダ&ファイルが削除されます。

3

ディレクトリ内のすべてのファイルを再帰的に削除するがディレクトリ構造は変更しないという単純なコマンドを探していました。リストファイルのみ(/ A:なしカレントディレクトリを再帰的(/ Sで-D)) ':

for /f "delims=" %i in ('dir /B /S /A:-DH') do @del /F /Q /A:H "%i" 

コマンド '-D DIR/B/S/A');だから、多分これは面白いかもしれませんdir 'サマリーレポート(/ B)。 'for'は各フルライン(/ delims =)をループし、強制的かつ静かなdeleteコマンドを実行します。私はさらにいくつかの不思議な(例えばthumbs.db)ファイルのリストと削除のために隠しフラグ(/ H)を使用しました。

+0

これも私にとってはうまくいった、私はすべてのサブフォルダで再帰的にワイルドカードと一致する特定のファイルを削除しなければならなかったので、 'for/f" delims = "%dir/b/ad/s"システム\ ALPS \〜$ PS * "')は@del/F/Q/A:H"%i "'を実行し、うわー、それは働いた! –

4
del X /f /s /q 
rd X /s /q 

これは、ROOtディレクトリを削除します。再び

md X 

とするか、最初にコピーを作成してください。

そうでなければ、あなたのXの直接のサブディレクトリのリストを与えるバッチfunkinessに

dir X /ad /b 

を行う必要があるでしょうあなたはfooに変更ディレクトリを試すのfooディレクトリの削除を防ぐために、残り

+0

はwin7 x64で動作します。ありがとう! – m1m1k

0

をうまくすることができ、削除などの前に:

CDのC:\ fooの RD/S/QC:\ fooの

これは、fooではなくfooであるすべてのファイルとフォルダを削除します。 「プロセスが別のプロセスによって使用されているため、ファイルにアクセスできません」というエラーメッセージが表示されます。

1

PowerShellを使用してみてください:

powershell -Command "Remove-Item '\foo\*' -Recurse -Force" 
関連する問題