2009-09-23 15:56:39 +0000 2009-09-23 15:56:39 +0000
203
203

Windowsでファイル名が長すぎるファイルを削除する方法を教えてください。

妻が持っているファイルやフォルダの中には、なぜかファイル名が長すぎて、通常の方法やコマンドラインでは削除できない(削除できない)状態になってしまったファイルがいくつかあります。私は、ファイル名は、フォルダ構造の深さのために長すぎると信じています。誰かこのようなファイルをクリーンアップするための良いユーティリティを知っていますか?

回答 (8)

428
428
428
2012-08-29 13:38:16 +0000

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

mkdir empty_dir
robocopy empty_dir the_dir_to_delete /mir
rmdir empty_dir
rmdir the_dir_to_delete

これは、内部的に robocopy [ ファイルパスのためのプレフィックス\?あなたが完全にディレクトリを削除したいとき、それは長いパスが含まれている場合、robocopy`は非常に良い仕事をします:

mkdir empty_dir
robocopy empty_dir the_dir_to_delete /mir
rmdir empty_dir
rmdir the_dir_to_delete

これは、内部的に robocopy ファイルパスのためのプレフィックスを持つWin32関数のユニコードを意識したバージョンを使用しています; それらの関数は259の代わりに2¹⁶-1 (32,767)文字の制限を持っています。

91
91
91
2009-09-23 16:01:40 +0000

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

dir /X

これは、短い名前の形式でファイル/フォルダを一覧表示します。その後、ファイルを削除するために書かれたように正確に短い名前を使用してください:

del LONGF~1.txt
53
53
53
2009-09-23 17:40:55 +0000

私はパスの中で、連続する親フォルダの名前を “1 "に変更して削除を試みながら、徐々に自分のやり方で作業しています。あなたは効果的に毎回パスを短縮しているし、私は最終的にディレクトリ構造全体を削除することができるようになるまで、4つまたは5つ以上のディレクトリで作業する必要があったことはありません(これはあなたが望むものであるかもしれないし、そうでないかもしれない)。最後の子フォルダからも同様にこれを行うことができますし、あなたの方法で上下に作業を行うことができます。

13
13
13
2009-09-23 16:12:29 +0000

コマンドプロンプト(cmd.exe)を含むいくつかのプログラムでは、フルパスの前に \.コマンドプロンプト(cmd.exe`)を含むいくつかのプログラムでは、フルパスの前に を付けて以下のようにすることで、ファイル長の制限を回避することができます:

\.\C:\some directory\other directory\a file with long name
13
13
13
2012-02-21 17:18:15 +0000

移動、コピー、削除のために「フルパスとファイル名」の長さ制限を回避するために使ったトリックは、「break in」で短くすることです。

そうすると、次のようになります。 c:\some\long\path…\and\foo\barfolders\oldfiles\myoldfile.txt。前提条件 - フォルダは共有フォルダになければなりません(それは私がこれを行うために必要としている場所であるサーバー上にある場合、それはすでにあるかもしれません)、そしてそれがすでにない場合は、パスのどこかにフォルダを選択し、それを共有しています。あなたの環境と被害妄想のレベルにもよりますが、NTFSのパーミッションが合理的に制限されている限り、誰もが共有へのアクセスを変更できるようにしてください。もし必要であれば、自分のアカウントだけに変更権限を与えてください。

さて、共有フォルダかその中にあるフォルダに行って共有するか、以下のようにコマンドラインを使ってください。foo “を "fooshare "として共有していると仮定すると、

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

とすると、X:ドライブはその共有フォルダ内の "フォルダ "を直接指しているので、"x:\oldfilesmyoldfile.txt "はかなり短くなっています。)

覚えておいてください、ファイルを含むフォルダを必ずしも共有する必要はありません、もしそれがすでに共有フォルダの中にあるならば、共有と入れ子になったフォルダをターゲットフォルダのnearthroughマップすることができます。

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

9
9
9
2009-09-23 15:59:00 +0000

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

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

5
5
5
2009-09-23 19:39:20 +0000

カット/ペーストしたファイルのディレクトリをどこか別の場所にリネームしてから削除してください。ここではうまくいきます。

またはコマンドプロンプトからでも構いませんが、面倒なことをしたくない場合は、コマンドプロンプトからでも構いません。

1
1
1
2009-09-23 16:00:00 +0000

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

私は一度これを持っていたし、私は何の運もなくいくつかのことを試してみました。良いツールを探すのではなく、私はWindowsディスクで再起動し、リカバリーコンソールに行き、ちょうどそこから削除しました。最初の時間と本当によく動作しました!

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

編集 - 警告、ちょうど上記を見て、唯一のトライアルです - 多分私が最初に思ったほど良いものではありません!

編集 - 警告、上記は、私が最初に思ったほど良いものではありません!

編集 - 警告、上記は、私が最初に思ったほど良いものではありません。