616

フォルダーとその子を再帰的に削除する方法が必要です。

このためのビルド済みツールはありますか、それとも作成する必要がありますか?

DEL /Sディレクトリを削除しません。

DELTREEWindows 2000+ から削除されました

4

24 に答える 24

848

従来のコマンド プロンプト (cmd.exe) を使用している場合は、RMDIR または RD:

rd /s /q "path"

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

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

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

/Q 静かなモード。/S でディレクトリ ツリーを削除してもよいか確認しない

PowerShell を使用している場合は、( 、、、、およびにRemove-Itemエイリアスされている) を使用でき、短縮できる引数を取りますdeleraserdrirmrmdir-Recurse-r

rd -r "path"
于 2008-09-18T23:11:12.423 に答える
151

管理者:

takeown /r /f folder
cacls folder /c /G "ADMINNAME":F /T
rmdir /s folder

sysファイルを含むあらゆるものに対応

EDIT:ファイルパスが長すぎる問題も解決する最良の方法を実際に見つけました:

mkdir \empty
robocopy /mir \empty folder
于 2008-09-18T23:41:07.967 に答える
128

RMDIR [/S] [/Q] [drive:]path

RD [/S] [/Q] [drive:]path

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

  • /Q 静かなモード。/S

于 2008-09-18T23:13:52.243 に答える
23

パスに移動し、このコマンドをトリガーします。

rd /s /q "FOLDER_NAME"

/s : 指定したディレクトリと、ファイルを含むすべてのサブディレクトリを削除します。/s を使用してツリーを削除します。

/q : rmdir をサイレント モードで実行します。確認なしでディレクトリを削除します。

/? : コマンド プロンプトでヘルプを表示します。

于 2016-03-01T19:32:12.090 に答える
20

などを備えrmたcygwinをインストールできます。ls

于 2008-09-18T23:14:45.127 に答える
15

ディレクトリを削除するには (存在するかどうかに関係なく)、次を使用します。

if exist myfolder ( rmdir /s/q myfolder )
于 2016-06-01T19:59:06.383 に答える
9
rm -r -fo <path>

これは、Windows PowerShell で取得できる最も近いものです。の略です

Remove-Item -Recurse -Force -Path <path>

(詳細) .

于 2020-09-04T17:20:22.550 に答える
6

rmdir /S /Q %DIRNAME%

于 2008-09-18T23:12:44.697 に答える
5

このコマンドを試してください:

del /s foldername
于 2008-09-18T23:11:01.737 に答える
4

rm -rfまず、何が機能するかを確認しましょう。

C:\Users\ohnob\things>touch stuff.txt

C:\Users\ohnob\things>rm -rf stuff.txt

C:\Users\ohnob\things>mkdir stuff.txt

C:\Users\ohnob\things>rm -rf stuff.txt

C:\Users\ohnob\things>ls -l
total 0

C:\Users\ohnob\things>rm -rf stuff.txt

rm -rfが返されることが期待される場所で一般的に使用される3 つのシナリオがあります0

  1. 指定されたパスは存在しません。
  2. 指定されたパスは存在し、ディレクトリです。
  3. 指定されたパスは存在し、ファイルです。

パーミッション全体を無視するつもりですが、パーミッションを使用したり、Windows で書き込みアクセスを拒否しようとしたりする人は誰もいません (OK、それは冗談です…)。

最初に 0に設定ERRORLEVELし、ディレクトリであるかどうかに応じて異なるコマンドを使用して、存在する場合にのみパスを削除します。パスが存在しない場合、 は 0 にIF EXIST設定されないため、通常の使用法を模倣する方法で成功を適切に検出するには、最初に を 0 に設定する必要があります。は とは異なり、ターゲットが存在しない場合にエラーをスローするため、 with をガードする必要があります。ERRORLEVELERRORLEVELrm -rfRDIF EXISTRDrm -f

次のスクリプト スニペットは、DELPATH が事前に引用されていることを前提としています。(これは、 のようなことをするときは安全です。 aをSET DELPATH=%1入れて、スペースを含む引数を渡してみて、どうなるか見てみてください)。スニペットが完了したら、 で失敗を確認できます。ECHO %1.cmdIF ERRORLEVEL 1

: # Determine whether we need to invoke DEL or RD or do nothing.
SET DELPATH_DELMETHOD=RD
PUSHD %DELPATH% 2>NUL
IF ERRORLEVEL 1 (SET DELPATH_DELMETHOD=DEL) ELSE (POPD)
IF NOT EXIST %DELPATH% SET DELPATH_DELMETHOD=NOOP
: # Reset ERRORLEVEL so that the last command which
: # otherwise set it does not cause us to falsely detect
: # failure.
CMD /C EXIT 0
IF %DELPATH_DELMETHOD%==DEL DEL /Q %DELPATH%
IF %DELPATH_DELMETHOD%==RD RD /S /Q %DELPATH%

ポイントは、環境が POSIX に準拠していれば、すべてが簡単になるということです。または、最小限の MSYS をインストールしてそれを使用する場合。

于 2015-04-21T17:40:10.517 に答える
4

rmdir /s ディレクトリ名

于 2008-09-18T23:10:48.303 に答える
3

これがあなたがする必要があることです...

次の行でバッチ ファイルを作成します。

RMDIR /S %1

バッチファイルを名前Remove.batを付けて保存し、C:\windows

次のレジストリ キーを作成します。

HKEY_CLASSES_ROOT\Directory\shell\Remove Directory (RMDIR)

次の値でデフォルト値を起動regeditして更新しますHKEY_CLASSES_ROOT\Directory\shell\Remove Directory (RMDIR)\default

"c:\windows\REMOVE.bat" "%1"

それでおしまい!これで、任意のディレクトリを右クリックして RMDIR 関数を使用できます

于 2012-09-04T01:55:58.260 に答える
2

GnuWin32をインストールして、Windows でネイティブに *nix コマンドを使用できます。私はこれをインストールしてから、Windows のミントの新しいコピーに何か他のものをインストールします。:)

于 2008-09-19T00:03:57.257 に答える
-3

古いバージョンの Windows を使用している場合は、deltree もあります。

ここから詳細を学ぶことができます: SS64: DELTREE - すべてのサブフォルダーとファイルを削除します。

于 2008-09-18T23:14:50.743 に答える