84

以前のバージョンのMS-DOS(バージョン7と言いたいのですが、間違っている可能性がdeltreeあります)には、指定されたパスからすべてのサブディレクトリとファイルを再帰的に削除するコマンドがありました。

deltreeもはや存在しませんがdel、ツリーを削除する機能を継承していないようです。del /sファイルは削除しますが、フォルダは削除しません。

バッチファイルからツリーを簡単に(つまり、1つのコマンドで)削除するにはどうすればよいですか?

4

10 に答える 10

94

他の人が述べたように、rdコマンドには/sサブディレクトリを再帰的に削除するスイッチがあります。これをスイッチと組み合わせて、/qプロンプトを出さずにサブディレクトリ (およびその内容) を強制的に削除することができます。

rd /s /q c:\foobar

誰もが見逃しているのは、Google によって返される一見 (ほぼ) すべてのページの正確な代替でrdないということです。このコマンドはディレクトリとファイルの両方に対して機能するため、1 つの便利な汎用削除コマンドになりました。つまり、次の両方が有効です。deltreewindows deltreedeltree

deltree /y c:\foobar
deltree /y c:\baz.txt

ただしrd、(当然のことながら)ディレクトリに対してのみ機能します。そのため、これらのコマンドの最初のコマンドのみが有効ですが、2 番目のコマンドではエラーが発生し、ファイルは削除されません。

rd /s /q c:\foobar
rd /s /q c:\baz.txt

さらに、delコマンドはディレクトリではなくファイルに対してのみ機能するため、最初のコマンドはエラーを返しますが、2 番目のコマンドのみが有効です。

del /f /q c:\foobar
del /f /q c:\baz.txt

で実行できるように、ファイルとディレクトリを削除する組み込みの方法はありませんdeltreerdand を個別に使用delすることは、ファイル システム オブジェクト (ファイル/フォルダー名) が常に可能または実用的ではないファイルまたはディレクトリであるかどうかを区別する必要があるため、せいぜい不便です。

deltreeコマンドは以前の OS からコピーできますが、16 ビット DOS コマンドであるため (Windows 9x でも)、32 ビット バージョンの Windows でのみ機能します。

delもう 1 つのオプションは、 と の両方を呼び出すバッチ ファイルを作成することrdです。このようなもの:

::deltree.bat

@echo off
rd  %* 2> nul
del %* 2> nul

次のように呼び出します。

deltree.bat /s /q /f c:\foobar
deltree.bat /s /q /f c:\baz.txt

これは と の両方rdを呼び出しdel、引数を渡し、出力を にリダイレクトして、nulいずれかが常に発生するエラーを回避します。

パラメータに対応または単純化するか、エラー メッセージを許可するために動作をカスタマイズすることをお勧めしますが、それでも理想的ではなく、 の直接的な置き換えにはなりませんdeltree

別の方法として、サードパーティ製のツールを入手することもできますが、サードパーティ製のツールを見つけることは、検索クエリを作成するための実際の作業です。

于 2013-01-15T19:57:45.067 に答える
44

次のコマンドに置き換えられました:RMDIRまたはRD

/Sを使用してすべてのサブディレクトリを削除します

/Qで静かに使用してください

例:

RMDIR /S /Q Folder2Delete
RD /S /Q Folder2Delete

ドキュメンテーション:

于 2008-12-03T22:07:48.280 に答える
10

懐かしさを感じて、独自の deltree.exe を作成しました。ディレクトリとファイルの両方で動作し、高速化のために SHFileOperation() を使用します。

https://github.com/ai7/toolbox/tree/master/deltree

deltree v1.01 [Mar 27 2015, 16:31:02] (gcc 4.9.1)

Usage: deltree [options] <path> ...

Options:
  -y    yes, suppresses prompting for confirmation
  -s    silent, do not display any progress dialog
  -n    do nothing, simulate the operation
  -f    force, no prompting/silent (for rm compatibility)
  -r    ignored (for rm compatibility)

Delete directories and all the subdirectories and files in it.

ワイルドカードが必要で、unix rm のように使用できます。

deltree -rf *
于 2015-03-28T00:04:33.077 に答える
6
rmdir /s /q directory
于 2008-12-03T22:02:44.720 に答える
4
$ヘルプrd
ディレクトリを削除(削除)します。

RMDIR [/ S] [/ Q] [ドライブ:]パス
RD [/ S] [/ Q] [ドライブ:]パス

    /S指定されたディレクトリ内のすべてのディレクトリとファイルを削除します
            ディレクトリ自体に加えて。ディレクトリを削除するために使用されます
            木。

    / Qクワイエットモード、/Sでディレクトリツリーを削除しても大丈夫かどうか尋ねないでください
于 2008-12-03T22:08:07.920 に答える
2

実際、最新の Windows オペレーティング システムの RMDIR および RD コマンドは、Win 98 の RD コマンドと Deltree コマンドの両方を 1 つのコマンドにマージします。これは内部コマンドであるため、RD.exe と RMDIR.exe は見つかりません。

この「RD /?」と入力すると、ダブルクォートなしのcmdでは、まさにあなたが望むものを得るでしょう。

于 2013-01-10T17:04:39.660 に答える
1

ディレクトリとそのすべての内容を再帰的に削除する

rd /s MY_DOOMED_DIR
于 2016-06-09T21:42:33.750 に答える
0

すべてのファイルとサブディレクトリを削除する

cd /d Directory && rd /s /q .\
于 2018-10-01T08:18:48.403 に答える