フォルダとその子を再帰的に削除する方法が必要です。
これのためのビルド済みツールはありますか、それとも作成する必要がありますか?
DEL /S
ディレクトリは削除しません。
DELTREE
Windows 2000+から削除されました
format c:
Linuxのインストールではないですか?もちろん冗談です。
フォルダとその子を再帰的に削除する方法が必要です。
これのためのビルド済みツールはありますか、それとも作成する必要がありますか?
DEL /S
ディレクトリは削除しません。
DELTREE
Windows 2000+から削除されました
format c:
Linuxのインストールではないですか?もちろん冗談です。
回答:
従来のコマンドプロンプト(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"
rd /s /q foo && echo "yay"
、ディレクトリ "foo"が存在しない場合は失敗します。
Access is denied
れますThe process cannot access the file because it is being used by another process
か?
管理者:
takeown /r /f folder
cacls folder /c /G "ADMINNAME":F /T
rmdir /s folder
sysファイルを含むあらゆるものに対応
編集:私は実際に、ファイルパスが長すぎる問題も解決する最良の方法を見つけました:
mkdir \empty
robocopy /mir \empty folder
robocopy /mir c:\empty .
takeown
私は誤ってのrsyncをLinuxシステムからフォルダをコピーしたと私はそのフォルダを削除するには、no権限を持っていたとして私を助けた...さえrobocopyを働きました。ありがとう
パスに移動して、このコマンドをトリガーします。
rd /s /q "FOLDER_NAME"
/ s:指定したディレクトリと、ファイルを含むすべてのサブディレクトリを削除します。/ sを使用してツリーを削除します。
/ q:rmdirをクワイエットモードで実行します。確認なしでディレクトリを削除します。
/?:コマンドプロンプトにヘルプを表示します。
受け入れられた答えは素晴らしいですが、Nodeがインストールされていると仮定すると、グロビングパターンを可能にするノードライブラリ「rimraf」を使用して、これをより正確に行うことができます。これを頻繁に使用する場合(私は使用します)、グローバルにインストールします。
yarn global add rimraf
次に、たとえば、私が常に使用するパターン:
rimraf .\**\node_modules
または、グローバルインストールを回避できるワンライナーですが、パッケージの動的ダウンロードには少し時間がかかります。
npx rimraf .\**\node_modules
このコマンドを試してください:
del /s foldername
rmdir / s dirname
まず、何をするかを見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のアクセス許可を使用したり、Windowsのものへの書き込みアクセスを拒否したりする人はいません(これは冗談ですが...)。
最初に0に設定ERRORLEVEL
し、パスが存在する場合にのみパスを削除します。パスがディレクトリかどうかに応じて異なるコマンドを使用します。パスが存在しない場合は0にIF EXIST
設定さERRORLEVEL
れないため、ERRORLEVEL
通常のrm -rf
使用を模倣する方法で成功を適切に検出するには、最初に0に設定する必要があります。RD
とIF EXIST
はRD
異なりrm -f
、を保護する必要があります。ターゲットが存在しない場合は、エラーがスローされます。
次のスクリプトスニペットは、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をインストールしてそれを使用する場合。
Powershell経由
Remove-Item -Recurse -Force "TestDirectory"
コマンドプロンプト経由
ここにあなたがする必要があるのは...
次の行でバッチファイルを作成します。
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関数を使用できます。
自己責任。「現状有姿」で提供される情報。広範囲にわたってテストされていません。
Windowsアイコン(通常は左下)を右クリックし、[Windows PowerShell(管理者)]をクリックします。次のコマンドを使用します(注意してください。注意しないと、すべてのファイルを簡単に削除できます)。
rd -r -include *.* -force somedir
somedir
削除する空でないディレクトリはどこですか。
外部接続ディスクまたは問題のあるディスクでは、Windowsが奇妙な動作をする場合があることに注意してください。削除(またはコピー試行)でエラーは発生しませんが、指示どおりにディレクトリは削除(またはコピー)されません。(この場合、少なくとも私にとっては、彼の回答で@n_yによって与えられたコマンドが「get-childitem:ファイルまたはディレクトリが破損していて読み取り不能です」などのエラーがPowerShellで発生することがわかりました。)
Windowsマシンへのnpmパッケージのインストールに問題があり、「rm -rf...
」コマンドが見つからないというエラーが表示された場合は、後で重要な回答があります。bash cliを使用して、Windowsでrmコマンドを実行できます。
npmユーザーのnpm config set script-shell "C:\Program Files\Git\bin\bash.exe"
場合、インストールしようとしているnpmパッケージにコマンドを使用するポストインストールスクリプトがある場合、npmの設定をこのように変更できます。npmパッケージの内容を変更したり、無効にすることなくrm -rf
、そのrm
コマンドを実行できます。インストール後のスクリプト設定。(たとえば、インストール後のスクリプトでコマンドをstyled-components
使用しますrm
)
rm
コマンドだけを使用する場合は、bashを使用して引数を簡単に渡すことができます。
つまり、Windowsで「rm」コマンドを使用できます。
ここに私のために働いたものがあります:
パスの長さを短くしてみてください。ie ::そのようなファイルにつながるすべてのフォルダの名前を可能な限り小さい名前に変更します。1文字の名前を言ってください。フォルダ階層で上方向に名前を変更します。これにより、uはパスの長さを効果的に短縮します。最後に、すぐにファイルを削除してください。
古いバージョンのウィンドウを使用している場合は、deltreeもあります。
私はコマンドを見つけるためにこのサイトが本当に好きです: SS64:Del-Delete Files