フォルダーとその子を再帰的に削除する方法が必要です。
このためのビルド済みツールはありますか、それとも作成する必要がありますか?
DEL /S
ディレクトリを削除しません。
DELTREE
Windows 2000+ から削除されました
従来のコマンド プロンプト (cmd.exe) を使用している場合は、RMDIR または RD:
rd /s /q "path"
RMDIR [/S] [/Q] [ドライブ:]パス
RD [/S] [/Q] [ドライブ:]パス
/S ディレクトリ自体に加えて、指定されたディレクトリ内のすべてのディレクトリとファイルを削除します。ディレクトリ ツリーを削除するために使用します。
/Q 静かなモード。/S でディレクトリ ツリーを削除してもよいか確認しない
PowerShell を使用している場合は、( 、、、、およびにRemove-Item
エイリアスされている) を使用でき、短縮できる引数を取りますdel
erase
rd
ri
rm
rmdir
-Recurse
-r
rd -r "path"
管理者:
takeown /r /f folder
cacls folder /c /G "ADMINNAME":F /T
rmdir /s folder
sysファイルを含むあらゆるものに対応
EDIT:ファイルパスが長すぎる問題も解決する最良の方法を実際に見つけました:
mkdir \empty
robocopy /mir \empty folder
RMDIR [/S] [/Q] [drive:]path
RD [/S] [/Q] [drive:]path
/S
ディレクトリ自体に加えて、指定されたディレクトリ内のすべてのディレクトリとファイルを削除します。 ディレクトリ ツリーを削除するために使用します。
/Q
静かなモード。/S
パスに移動し、このコマンドをトリガーします。
rd /s /q "FOLDER_NAME"
/s : 指定したディレクトリと、ファイルを含むすべてのサブディレクトリを削除します。/s を使用してツリーを削除します。
/q : rmdir をサイレント モードで実行します。確認なしでディレクトリを削除します。
/? : コマンド プロンプトでヘルプを表示します。
などを備えrm
たcygwinをインストールできます。ls
ディレクトリを削除するには (存在するかどうかに関係なく)、次を使用します。
if exist myfolder ( rmdir /s/q myfolder )
rm -r -fo <path>
これは、Windows PowerShell で取得できる最も近いものです。の略です
Remove-Item -Recurse -Force -Path <path>
(詳細) .
rmdir /S /Q %DIRNAME%
このコマンドを試してください:
del /s foldername
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
。
パーミッション全体を無視するつもりですが、パーミッションを使用したり、Windows で書き込みアクセスを拒否しようとしたりする人は誰もいません (OK、それは冗談です…)。
最初に 0に設定ERRORLEVEL
し、ディレクトリであるかどうかに応じて異なるコマンドを使用して、存在する場合にのみパスを削除します。パスが存在しない場合、 は 0 にIF EXIST
設定されないため、通常の使用法を模倣する方法で成功を適切に検出するには、最初に を 0 に設定する必要があります。は とは異なり、ターゲットが存在しない場合にエラーをスローするため、 with をガードする必要があります。ERRORLEVEL
ERRORLEVEL
rm -rf
RD
IF EXIST
RD
rm -f
次のスクリプト スニペットは、DELPATH が事前に引用されていることを前提としています。(これは、 のようなことをするときは安全です。 aをSET DELPATH=%1
入れて、スペースを含む引数を渡してみて、どうなるか見てみてください)。スニペットが完了したら、 で失敗を確認できます。ECHO %1
.cmd
IF 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 をインストールしてそれを使用する場合。
rmdir /s ディレクトリ名
これがあなたがする必要があることです...
次の行でバッチ ファイルを作成します。
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 関数を使用できます
GnuWin32をインストールして、Windows でネイティブに *nix コマンドを使用できます。私はこれをインストールしてから、Windows のミントの新しいコピーに何か他のものをインストールします。:)
古いバージョンの Windows を使用している場合は、deltree もあります。
ここから詳細を学ぶことができます: SS64: DELTREE - すべてのサブフォルダーとファイルを削除します。