Windowsでファイル名が長すぎるファイルを削除する方法は?[複製]


202

この質問にはすでに答えがあります:

私の妻にはいくつかのファイルとフォルダーがあり、それらは通常の方法またはコマンドラインを使用して削除できない(削除できない)ファイル名になっています。フォルダー構造の深さのため、ファイル名が長すぎると思います。このようなファイルをクリーンアップするための優れたユーティリティを知っている人はいますか?


これらのファイルはどのように作成されましたか?
ニック

このトピックに関する私の無知について申し訳ありませんが、Windowsはこれらのファイルを処理すべきではありませんか?Eddinsが投稿することは、Windowsによって(エクスプローラーからでも)自動的に行われるべきではありませんか?
ステファノスカランツィス

2
@ Mokubai- この質問は古いので、重複した質問はこの質問の重複としてマークする必要があります。
AStopher

1
@cybermonkey:そして、より良い答えがあります。
エルセディル

読者のCTRLDELETE
皆様に

回答:


426

ディレクトリを完全に削除し、長いパスが含まれrobocopyている場合、非常に良い仕事をします:

mkdir empty_dir
robocopy empty_dir the_dir_to_delete /mir
rmdir empty_dir
rmdir the_dir_to_delete

これは、robocopyが内部的にUnicode対応バージョンのWin32関数\\?\とファイルパスのプレフィックスを使用するために機能します。これらの関数には、259文字ではなく2¹⁶-1(32,767)文字の制限があります。

すべてのファイルを削除するには、このプロセスを複数回実行する必要がある場合があります。


1
ファイルシステムに短縮名(8.3)が保存されていない場合に効率的です。
アントワーヌ

1
これは、削除を拒否した頑固なWindowsストアキャッシュファイルでうまく機能しました。ありがとう!
サミール14年

1
私は仕事に、このためのrobocopyラインに/パージを追加する必要がありましたが、それは、その後のトリックをやった
actionshrimp

3
この混乱に私を巻き込んだのはRobocopyですが、Robocopyを使用して抜け出すことは私には決してありませんでした。素晴らしい答えです!ありがとう!
ジェイミショー14

2
@SarahofGaia、私の悪い、それは実際に2¹⁶-1-
ブノワ

91

コマンドプロンプトから:

dir /X

これにより、ファイル/フォルダーが短い名前の形式でリストされます。次に、ファイルを削除するために記述されたとおりに短い名前を使用します。

del LONGF~1.txt

1
私はそれが好きです、それは良い側面の考え方です。
Col

この場合の動作を保証することはできませんが、通常の方法では削除できない無効な文字が最後にあるフォルダーを削除するために何度か使用しました。
ウィル

1
これは、現在のディレクトリ内のファイルとフォルダに対して機能しますが、パスが長すぎるフォルダ内で何らかの方法で自分自身を見つけることができた場合、それは役に立ちません。たとえば、私は現在、長すぎるパスのコンソールにいるため、dirまたはを使用できませんcd ..
ボブソン

1
@Bobson 代わりにdir使用できない場合pushd。それは私のために働いた。
BadHorsie

4
これはWindows 10では機能しません。表示されるファイル名は長いものです
-Loenix

53

私はプログレッシブリーでパスに進み、連続する各親フォルダーの名前を「1」に変更して削除しようとします。毎回パスを効果的に短縮しており、ディレクトリ構造全体を最終的に削除できるようになるまで(これは必要な場合とそうでない場合があります)、4つまたは5つ以上のディレクトリで作業する必要はありませんでした。同様に最後の子フォルダーからこれを行い、上下に作業することができます。


7
これは私のために働いた唯一のものでした。ここやこのような他のフォーラムで与えられた他のすべてのトリックは機能しませんでした。
アンドリューアーノット

奇妙に十分に機能する唯一の提案でした。
ネストルレドン14

これは私のために働いた、私を助けたショートカットはでしたmv * 1 && cd 1。これは、ディレクトリに複数のファイルがある場合は機能しませんでしたが、その時点でrm -rf *通常はうまくいきました。
アレクサンダーヴァールウィック

1
Windows 10でこれを行うことはできません... rename throws "filename to long"エラー
-Dawesi

3
これは私のために問題を解決しただけでなく、最初に問題になった理由も説明しています。制限に近いパスが必要だったので、親フォルダーの名前を変更し( "backup Nov 2016 save"などの名前を名前に追加)、サブフォルダー内のファイルを制限を超えてプッシュしました。原因と解決策を知ることは良いことです。他の方法でも起こる可能性があることはわかっていますが、これは一般的な方法だと思います。
eselk

13

コマンドプロンプト(cmd.exe)を含む一部のプログラムでは、次の\\.\ようにフルパスのプレフィックスを付けることにより、ファイルの長さの制限を回避できます。

\\。\ C:\ some directory \ other directory \ a長い名前のファイル

3
Windows 10では動作しません
Dawesi

おかげで、cmdはWin7でこれで魅力を発揮しましたrm -rf \\directoryname
フィリッププライド

13

何かを移動、コピー、または削除するために「フルパスとファイル名」の長さの制限を回避するために使用したトリックは、フォルダーを指すマップされたドライブ文字を使用して途中まで(またはそれ以上)侵入することで短くすることです道を下る

したがって、c:\ some \ long \ path ... \ and \ foo \ bar \ folders \ oldfiles \ myoldfile.txtがあります。

次に、パスの最初のチャンクが数文字の長さになるように、任意のドライブ文字をパスに沿ったどこかにマップします。前提条件-フォルダーは共有フォルダー(サーバー上にある場合は既に存在している可能性があり、これを行う必要がある場所)に存在する必要があります。それを共有します。環境とパラノイアのレベルに応じて、NTFSのアクセス許可が合理的に制限されている限り、すべてのユーザーが共有へのアクセスを変更できるようにします。必要に応じて、自分のアカウントにのみ変更権限を許可してください。

次に、共有フォルダーまたはその中の1つに移動して共有するか、次のようにコマンドラインを使用します。フォルダー「foo」を「fooshare」として共有するとします。

net use x: \\mycomputername\fooshare\bar\folders /persistent:no

X:ドライブはその共有内のフォルダー「folders」を直接指すようになったため、「x:\ oldfiles \ myoldfile.txt」はかなり短くなりました。

(「/ persistent:no」は、これが次回の再起動に耐えられず、後で混乱することを意味します。完了したら、フォルダの共有を解除することを忘れないでください。)

それはあなただけマッピングすることができ、共有フォルダ内にすでにある場合は、必ずファイルを含むフォルダを共有する必要はありませんが、覚えておいてくださいを通じて共有し、ターゲットフォルダにネストされたフォルダ近いファイルに、それが正常に動作します。

ユーザーがフォルダー構造のかなり深い場所にドライブをマップし、そこから255文字を使用できることに気付いたときに、2つのサーバー間で大規模なロボコピーを行うこの手法を使用する必要がありましたが、合計ファイルパス長を超えていましたローカルドライブルートからアクセスした場合。


4
を使用して共有を回避できます。subst x: C:\Some\first\part\of\the\long\pathその後、ドライブを削除しますsubst x: /d
mihi 14年

1
良い試みですが、10個のk個のフォルダーがネストされている場合、それは不可能です。
ジュリアンナイト

このsubstトリックは、ファイル名がドライブのルートであっても260文字を超えるほど長くない限り、うまく機能するようです。
スティーブンチョン

あなたはまた、明示的に任意のフォルダを共有する必要はありません。net useあなたは、デフォルトの管理共有を使用することができ、:net use x: \\localhost\c$\bar\folders /persistent:no
kapex

9

私が見つけた最も簡単な方法は、ubuntuライブCDから起動することです。

別の方法として、パスの途中で共有フォルダーを作成し、ネットワークドライブをそのフォルダーにマップし、マップされたフォルダーから削除を実行できます(同じマシン上であっても)


17
Ubuntu Live CDがWindowsの問題のトラブルシューティングに役立つ頻度はおもしろいです^^
Ivo Flipse

1
私自身、危険なネットワークがライブCDを試す、ファイルシステムの問題がライブCDを試す、パーティションテーブルが破損しているなどに気付きました:
Col

これは私のために働いた唯一のソリューションです。Linux、大好きです!<3
デビッドフライ14

1
Windowsからのbashの実行Linuxは必要ありません。;-)また、Windows 10を実行している場合、「Windows Subsystem for Linux」をインストールするだけで、Windowsは基本的にubuntu apiフックを使用してジョブを完了します。 sort、xargs、md5sum、gpg、curl、wget、apache、mysql、python、perl、ruby、php、gcc、tar、vim、emacs、diff、patch、およびUbuntuアーカイブの数万個のバイナリパッケージのほとんど! 「これはたまたまWindowsで実行されている非常に完全なLinux開発環境です。zdnet.com
article /

cygwinのは、窓にLINUXのコマンドを実行するための別の代替である
atom88

5

ファイルを別の場所でカット/ペーストするディレクトリの名前を変更してから、削除します。ここで動作します。

または、トラブルを経験したくない場合は、コマンドプロンプトからのみ。


これは魅力のように機能します。そこで掘り下げて(私にとっては、ネストされたnode_modulesフォルダーでした)、デスクトップにドラッグして削除します。一度にいくつかのフォルダを移動しながら、すすいで繰り返します。なんという厄介な問題。
nickb

7
これは私にとってはうまくいきませんでした-長いファイル名のために貼り付け操作が失敗しました-どこでカットしても問題ありません。
UpTheCreek

1

おそらく最善の方法ではなく、私は他の人が何を思い付くのかを見ることに興味があります-

私はこれを一度持って、私は運なしでいくつかのことを試しました。良いツールを探すのではなく、Windowsディスクを再起動し、回復コンソールに移動して、そこから削除しました。初めて働いて、本当にうまくいきました!

また、ちょうどあなたのためにGoogleをして、これを見つけました-DelinvFileは良さそうに見えますが、それを保証することはできません。

編集-警告、上記はただの試用に過ぎない-たぶん私が最初に思ったほど良くない!


無料のrimrafは問題なく機能し、他のすべてのアイデアが失敗したときに機能しました。これは、Node.jsのを必要とする
ジュリアン・ナイト
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.