1. ホーム
  2. windows

[解決済み] deltreeはどうなったのか、その後継は?

2023-06-09 13:56:03

質問

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

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

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

どのように解決するのですか?

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

rd /s /q c:\foobar

誰もが見落としているのは rd ではない の完全な置き換えではありません。 deltree のように、一見すると ( ほとんど ) でググって返ってきたすべてのページが windows deltree でググって返されるすべてのページがそうだと思わせるでしょう。その deltree コマンドは両方のディレクトリに対して機能しました とファイル であり、一つの便利な万能削除コマンドとなっています。つまり、以下の両方が有効です。

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

ただし rd (驚くには値しないが) はディレクトリに対してのみ機能します。 . そのため、これらのコマンドのうち最初のものだけが有効で、2番目のものはエラーとなり、ファイルは削除されずに残ります。

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

さらに del コマンドはディレクトリではなくファイルに対してのみ動作するため、2番目のコマンドのみが有効で、1番目のコマンドはエラーとなります。

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

ファイルやディレクトリを削除する方法は組み込まれていません。 deltree . 使用方法 rddel を個別に使用することは、ファイルシステムのオブジェクト (file-/folder-name) がファイルであるかディレクトリであるかを区別する必要があり、常に可能であるか実用的であるとは限らないので、せいぜい不便である。

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

もう 1 つの方法は、両方の delrd のようなものです。

::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

これは、両方の rddel に、引数を渡して出力をリダイレクトします。 nul にリダイレクトして、そのどちらかが必ず出すエラーを回避しています。

おそらく、パラメータを調整したり簡略化したり、エラーメッセージを許容するために動作をカスタマイズしたいと思うでしょうが、それでも、これは理想的ではなく、また deltree .

別の方法として、サードパーティのツールを入手することもできますが、それを見つけるのは検索クエリの作成における本当の練習になります。