'rm -rf'はWindowsと同等ですか?



Isrm Rfequivalent Windows



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

既製のツールはありますか、それとも作成する必要がありますか?



DEL /Sディレクトリは削除されません。

DELTREEされています ウィンドウズ 2000年以降に削除




#1階

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

次の行を使用して、バッチファイルを作成します

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機能を使用できます。


#2階

これは私のために働いた:

パスの長さを短くしてみてください。つまり、::は、そのようなファイルのすべてのフォルダの名前を可能な限り小さい名前に変更します。文字の名前を言います。フォルダ階層で上向きに名前を変更し続けます。これにより、パスの長さを効果的に短縮できます。最後に、ファイルをすぐに削除してみてください。


#3階

まず、確認しましょうrm -rf役割:

C:Usersohnob hings>touch stuff.txt C:Usersohnob hings>rm -rf stuff.txt C:Usersohnob hings>mkdir stuff.txt C:Usersohnob hings>rm -rf stuff.txt C:Usersohnob hings>ls -l total 0 C:Usersohnob hings>rm -rf stuff.txt

3つの状況がありますrm -rf期待収益に一般的に使用されます0

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

私は許可のこと全体を無視しますが、誰も許可を使用したり、Windowsで書かれたものへのアクセスを拒否しようとしたりしません(まあ、これは冗談を意味します...)。

まず第一に will ERRORLEVEL 0に設定 、そして、パスが存在する場合にのみ、それがディレクトリであるかどうかに応じて異なるコマンドを使用して、パスを削除します。パスが存在しない場合、IF EXISTしないERRORLEVEL 0に設定されているため、最初に設定する必要がありますERRORLEVEL通常をシミュレートするには0に設定rm -rf使用方法正しく検出されます。 use IF EXIST protected RD with rm -f Different、RDターゲットが存在しない場合、エラーがスローされるため、必要です。

次のスクリプトフラグメントは、DELPATHが事前に参照されていることを前提としています。 (実行するときSET DELPATH=%1これはクラス操作中は安全です。ECHO %1をa . 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をインストールして使用する場合。


#4階

del / s / qディレクトリが削除されます


#5階

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

rd /s /q 'FOLDER_NAME'

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

/ q:rmdirをクワイエットモードで実行します。確認せずにディレクトリを削除してください。

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


#6階

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

if exist myfolder ( rmdir /s/q myfolder )

#7階

Powershell5.1を使用する

get-childitem *logs* -path . -directory -recurse | remove-item -confirm:$false -recurse -force

削除するディレクトリの名前に置き換えます ログ

get-childitem 現在のパス(。)からサブディレクトリを再帰的に検索します。

アイテムの削除 結果を削除します。


#8階

Powershell経由

Remove-Item -Recurse -Force 'TestDirectory'

コマンドプロンプト経由

https://stackoverflow.com/a/35731786/439130


#9階

受け入れられた答えは良いですが、Nodeがインストールされていると仮定すると、ノードライブラリ 'rimraf'を使用してこれをより正確に行うことができ、グロブモードを使用できます。頻繁に使用する場合(私はそうです)、グローバルにインストールするだけです。

yarn global add rimraf

次に、たとえば、私がよく使用するパターンは次のとおりです。

rimraf .** ode_modules

または、グローバルインストールを回避できる1行のプログラムの場合、パッケージの動的ダウンロードには少し時間がかかります。

npx rimraf .** ode_modules

#10階

自己責任。提供される情報は「現状有姿」です。厳密なテストはありません。

Windowsアイコン(通常は左下隅)を右クリックし、[Windows PowerShell(管理者)]をクリックし、次のコマンドを使用します(注意しないと、すべてのファイルを簡単に削除できます)。

rd -r -include *.* -force somedir

somedir削除する空でないディレクトリです。

外部接続されたディスクまたは問題のあるディスクの場合、Windowsが奇妙な動作をすることがあることに注意してください。削除(またはコピーの試行)中にエラーは発生しませんが、ディレクトリは指示どおりに削除(またはコピーされません)されません。 (この場合、少なくとも私にとっては、@ n_yが回答で指定したコマンドは、「get-childitem:ファイルまたはディレクトリが破損していて読み取り不能」などのエラーを生成することがわかりました。PowerShellMediumでは)


#11階

rmdir / s dirname


#12階

次のコマンドを試してください。

del /s foldername

#13階

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

rd /s /q 'path'

PowerShellを使用している場合は、Remove-Itemを使用できます。 (エイリアスis deleraserdrirm with rmdir)そして使用は| _ +に短縮できます_ | of -rパラメータ

-Recurse

#14F

rd -r 'path'


#15F

rmdir /S /Q %DIRNAME%

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

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

  • /Sクワイエットモード、使用できるかどうか尋ねないでください/Qディレクトリツリーを削除してください


#16階

cygwinをインストールできます。/S with rm Waitがあります。


#17階

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

私はこのサイトがコマンドを見つけるのが本当に好きです: SS64:ファイルの削除削除


#18階

管理者:

ls

sysファイルを含むすべてのコンテンツに適用可能

編集:私は実際に最善の方法を見つけ、ファイルパスが長すぎるという問題も解決しました:

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

#19F

Windowsにインストールできます GnuWin32 そして、このマシンで* nixコマンドを使用します。これをインストールする前に、Windowsの薄い新しいコピーに他のものをインストールしました。 :)