かなり大きな名前のファイルを強制的に削除する


62

私は定期的にNode.jsを使用して、作成したプログラムの依存関係を管理しています。今日、私はこのようなフォルダー構造になりました:ここに画像の説明を入力してください

ファイルを削除しようとすると、次のエラーが発生しました:

ソースファイル名は、ファイルシステムでサポートされている名前よりも大きくなっています。この操作を試みる前に、短いパス名を持つ場所に移動するか、短い名前に変更してみてください。

すでにC:\にあったので、それほど短くなることはありませんでした。



あなたのフォルダ構造がこのように大きくなった方法を知っていますか?
エランotzer

1
npmを使用して@eranotzer。
セイリア

packages.jsonの依存関係を誤って記述した場所はありませんか?
エランotzer

@eranotzerはい。npm @ 2の動作方法により、すべての依存関係がその内部に依存関係をネストしました。これは、依存関係チェーンが任意に長くなる可能性があることを意味しました。npm @ 3はこの動作を調整しようとしています。
セイリア

回答:


75

Microsoftツールを使用しますrobocopy.exe

  1. 新しい空のフォルダを作成します、例えば c:\empty
  2. 次に、その空のフォルダーを、削除しようとしている長いファイル名を含むフォルダーにコピーしますc:\myannoyingfolder。コマンドプロンプトで次のようにします。

    robocopy / MIR c:\ empty c:\ myannoyingfolder


これは頻繁に私のワークフローの一部であるため、Windowsシェルと統合する方法を見つけました。以下の私の答えをご覧ください。:)
toddmo

注:このコマンドが完了するまでに数秒から数分かかる場合があります。だから、心配しないで、魔法をやらせてください:-)
アディルマリク

おかげで、私のために働いた。ファイルの1つをまだ保持しているプロセス(IIS)も強制終了する必要がありました。
スリック忍

robocopy.exeを開こうとすると、ウィンドウが一瞬点滅し、その後何も起こりません。助けてください
Maulikモディ

29

さて、ツリーを削除したいとしましょう。D:\very\long\path必ずしもRobocopyなどのツールを使用する必要はありません。

  1. 削除できないディレクトリを含むドライブのルートディレクトリに移動します
  2. 一文字の名前でディレクトリを作成します。例えば D:\a
  3. この場合、削除するディレクトリ内に移動します D:\very\long\path
  4. すべて選択(Ctrl+ A)およびカット(Ctrl- X
  5. 作成したフォルダーに移動します
  6. 貼り付け(Ctrl- V
  7. 次に、ルートディレクトリに移動し、この場合は一時フォルダーを削除します D:\a
  8. その後、戻って元のディレクトリを削除します

2
これは私にとって最初の試みではうまくいきませんでした。しかし、この手順を繰り返した後、さらにいくつかのフォルダーレベルですべてを削除することができました。
abaldwin99

1
素晴らしい解決策、完璧に働きました。シンプルで効果的な、ありがとう!
CanerÖncü

すばらしいです!!魅力のように動作します!!! 他のツールは必要ありません。ありがとう!
プラサンスKC

これはうまく機能します。パスからファイルを選択できない場合は、これにポイントを追加します。長いパスの途中のフォルダーを選択し、代わりにそのフォルダーを一時フォルダーに移動してから削除できます両方とも同様の方法で。
ナラヤナナギレディ

4

del /Fand を含む多数のコマンドを試しているときにこの問題を入力し始めましたrmdir /S(また、ごみ箱をバイパスするために削除中にShiftキーを押したままにします)。私はと思いrmdir /S、私は一度にツリー少数のノードを進め、その後、リーフノードたフォルダを削除を続行することができたので、実際にすべてのファイルを削除しました。最終的に私はそれらをすべてきれいにしたが、それはばかげていた。


4

この機能をWindowsシェルに統合できます。Floの答えに対する私の拡張は、コメントするには長すぎました。

DeleteWindowsコンテキストメニューにコマンドを追加しました。

ここに画像の説明を入力してください

このdelete.regファイルは、レジストリエントリを追加して、フォルダをrobodelete.batバッチファイルに関連付けます。

delete.reg

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\Delete]

[HKEY_CLASSES_ROOT\Directory\shell\Delete\command]
"Extended"=""
@="\"D:\\Documents\\robodelete.bat\" \"%1\""

robodelete.bat

mkdir c:\empty
robocopy /MIR c:\empty %1
rmdir %1
rmdir c:\empty

:必要に応じて、両方のファイルのパスを変更する必要がある場合があります。

警告:このコマンドを元に戻す方法はありません。ごみ箱を使用せず、フォルダを完全に破棄する前にY / Nに確認を求めません!


警告ありがとうございます。ワークフローにもこれが必要ですが、右クリックメニューにY / Nの確認が表示されない核ボタンが表示されないようにします。時間に余裕があれば、その調整を行い、編集を提案します。
abaldwin99

1
このような多分@ abaldwin99、stackoverflow.com/a/1807318/1045881
toddmo


3

これを行う最良の方法は、robocopyを使用することです。これを個人のブログに記録し、フォローしてください。

http://clintboessen.blogspot.com.au/2014/05/how-to-delete-files-which-exceed-255.html


4
このリンクは質問に回答するかもしれませんが、回答の重要な部分をここに含め、参照用のリンクを提供する方が良いでしょう。リンクされたページが変更または消えると、リンクのみの回答が無効になる可能性があります。
アンドレア

0

多くの場合、コマンドプロンプトからディレクトリにCDを作成し、DELを使用すると機能します。

そうでない場合は、ディレクトリツリーの名前を上に移動する必要があります。最下位レベルのフォルダーの名前を短い名前(「a」など)に変更し、次に上位のフォルダー名などに変更します。下から上へと作業することで、常に最終ファイルよりも短いフルパスを持つ名前を操作します。


0
  • 管理コマンドプロンプトを開く
  • net use z: c:\path
  • del z:\*.*

それに応じて微調整します。Z:は、問題のパスをマップする任意のドライブ文字です。その最後の削除コマンドは、マップしたWHOLEディレクトリを消去します-必要に応じてより具体的にしてください。


2
これは、非パワーユーザーにとって非常に危険です。間違って実行すると、ドライブを消去する可能性があります。
ルディストライダム

同意した100%。これについては慎重に進めてください。
ブラッドリーフォーニー


-1

私も同じ問題を抱えていたので、自分で見つけたのです。親フォルダの名前をできるだけ少なくするだけです。例 「D」ドライブのフォルダがD:// Folder / Undelete_Folderのようになっている場合。必要なことは、親フォルダの名前をできるだけ小さく変更することです。名前を「a」に変更できます。あなたの場所はD:// a / Undelete_folde rになります。そして、親フォルダを削除します。


これは必ずしも機能しないだけでなく(縮小してもなお大きい場合はどうなりますか?)、フォルダーがドライブのルートにあることを明示的に述べました。
セイリア

-2

他のすべてが失敗した場合

文字列の最後のディレクトリに移動します。ファイルの切り取り貼り付けを文字列の4番目または5番目のファイルに戻します。[Shift] + [Delete]でトリックを実行する必要があります。

DPMバックアップからテスト復元ファイルを削除していたため、上記のコマンドを昇格したコマンドプロンプトで実行することに懐疑的でした。

お役に立てれば。


カット操作のための長いファイルパスがまだ残っているため、これはおそらく機能しません。
セイリア14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.