プロジェクトをEclipseにインポートすると、何らかの形でディレクトリの再帰バージョンの作成が開始されました。
さて、何かを削除しようとすると、「指定したファイル名が長すぎます」というメッセージが表示されます。
コマンドシェルから削除できません。 Explorerから削除できません。私は何もできません。 Eclipseのコピーがいくつ作成されたかはわかりません。何かがおかしいことに気づき、操作をキャンセルする前に、Eclipseが1分ほど実行されていました。
最上位フォルダーのプロパティを取得できますが、497個のフォルダーが含まれています。
質問1:Windowsでこれらすべてを削除するにはどうすればよいですか?
質問2:Eclipseは一体何を考えていたのですか?
私はEclipseでこれに似た問題がありました:Subclipseを使用してプロジェクトをインポートしようとすると、削除できないディレクトリの深くネストされたセットが生成されました。
私はいくつかのことを行いました。まず、ディレクトリ名を可能な限り短い長さに編集しました(実際、これは無意味だと思います)。次に、ディレクトリツリーを可能な限り深く走査し、ブランチを切り取って貼り付け(元のブランチを削除できるようにします)、プロセスを繰り返しました。
@Charlieと@Tomalekのソリューションは、よりエレガントに見えるかもしれません。しかし、経験を繰り返して調べるつもりはありません。
robocopy empty_dir base_nested_dir /purge
例:次のような長すぎるフォルダーパスがある場合:
D:\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles
これらの指示に従って削除してください。
C:\Users\Name\Desktop\temp
などの空のフォルダーを作成します。robocopy C:\Users\Name\Desktop\temp D:\BackupFolder /purge
注:ステップ3のいずれかのパスにスペースがある場合、パスを引用符で囲む必要があります。
7Zipは、コマンドラインに慣れていない場合の究極のソリューションです。
乾杯!
Q1について)
Substを使用して、パスを短縮します。
subst Q: C:\very\long\path\created\by\Eclipse
Q:
del *.*
Q2について)
長いパスは他のOSではそれほど問題ではなく、canが255文字より長いパスを処理するWindows API関数があります。
MAX_PATH
より長いパスを処理する必要がある場合は、UnicodeバージョンのWindowsファイルAPI(たとえば DeleteFileW
)を使用し、\\を使用する必要があります。 ?\プレフィックス。これらのAPIを使用して短いプログラムを作成し、これらのディレクトリを列挙して削除できます。
修正は簡単で無料です!フォルダの名前を変更する必要はまったくありません。
Cygwin を無料でダウンロードしてください。
rm -f -r <folder-name>
コマンドを使用して、しばらくお待ちください。
サイズが1.5 GBのフォルダーに多数の内部フォルダーがあり、機能しました!
前の3つの応答は明らかにスパムです(ペイウェアデモ用)。無料のワンクリックソリューションが必要な場合は、こちらをご覧ください。
http://www.osmstudios.com/Display.asp?Page=pathtoolong
おそらく、このスレッドのさらに上から3行Javaを使用しています。
-fm
このWindows Sysinternalsフォーラムのmaxaha1による投稿 で説明されている方法が機能しました。
トップダウンで作業することをお勧めします。同じボリューム(共有)内にいる限り、通常、ドラッグされるディレクトリの内容(および、長さ/再帰の問題)に関係なく、上位レベルのディレクトリを新しい親にドラッグできます。したがって、問題のあるパスを4レベルまたは5レベル下のディレクトリに移動し、ルートにドラッグします。次に、いくつかのレベルしか含まれていない元のパスを削除します。理想的には、250文字未満(ファイル名を含む)への最長パスを維持するように働きます。現在、システムの移行を行っていますが、このメソッドなしではコピーできない340以上のcharパスを持つユーザーがいます。私はsubst、再帰的なNet Use、再帰的なスクリプトなどを試しました。残念ながら、ユーザーは最高のコーダーや管理者などを惑わすものを作成できるようです。
新しいフォルダーを作成し、そのたびにいくつかのフォルダーを上から下にドラッグアンドドロップ(および削除)して、すべてをクリーンアップします。
eclipseを使用して同じ問題に直面しました。無数のネストされたフォルダが作成され、500MB以上のスペースを占有しました!!!!
私は窓でたくさんのことを試しましたが、何も動作しませんでした。
最終的に私はちょうどubuntuを使用して再起動し、その恐ろしいフォルダを削除しました。ちょうどそのように..ubuntuには、ウィンドウのようにファイルパスの長さに基づいたアクセス制限がないようです..
上記の誰かがすでに「rimraf」への参照を投稿しましたが、詳細を追加します。システムにNode=がインストールされている場合、単純に rimraf モジュールを使用します(パスにインストールできます)。これが最も簡単な削除方法です。 Node.jsがファイルシステムをデバイスカーネルレベルで処理するため、rimrafが素晴らしいことはそれほど多くはありません。「fs」モジュールソースを見ると、 Nodeのコードでは、 this などのコードが表示されます。本質的に、Node.jsはGit for Windowsよりもはるかに優れたファイルシステムを処理します。 '長いパス名を持つフォルダを削除しないでください。
プログラムで DeleteFileW およびRemoveDirectoryW
を使用して削除し、L"\\?\"
をファイル名に。 APIのAバージョンではなくWバージョンを使用する必要があることに注意してください。
ここや他の場所(robocopy、7Zip、subst、怪しげなスパイウェア)に投稿されたソリューションに満足できなかったため、独自の小さなコマンドラインツールを導入しました。
ファイルまたはディレクトリ全体を再帰的に削除できます。将来的にはオプションを追加するかもしれません。
このツールは SuperDelete と呼ばれ、 リリースページページGitHub から取得できます。
笑私は数年前に同様の問題を抱えていました。バグが原因で、ファイル名が長くなりすぎるまで、フォルダの無期限のネストを作成しました。
IIRC、フォルダー構造をクロールすることでプログラムで削除しました。
さて、私はこれの解決策を探してみましたが、Windowsユーザーにとって最も簡単な解決策の1つを見つけました
Mobaxtermを開きます。削除するディレクトリに移動し(cdを使用)、次のコマンドを実行します
rm -rfディレクトリ名
すべてのフォルダー、サブウィンドウが削除について不満を言っていたサブフォルダーが削除されるようになりました
2016年にLinuxがこの数年前に解決したとき、これがWindowsユーザーにまだ問題をもたらしていることは非常に迷惑です。 Javaで簡単に行うと、さらに面倒になります。
Change.orgを使用して、MSにこの機能を含めるよう請願する必要があります。難しいことはできません。下位互換性が心配な場合は、管理者がオンまたはオフにできる厳密なモードを用意しないでください。少なくとも警告は表示しますが、とにかくそれを削除します。 GRRRRR [/暴言]
マシンでJavaを実行している場合、次のコードが役立つことがあります。
import Java.io.File;
public class Delong {
public static void main(String[] args) {
File file = new File("F:\\YourDirectory\\YourFile");
boolean result = deleteDirectory(file);
if(result)
System.out.println("Deleted");
else
System.out.println("Failed");
}//end main
/**
* Force deletion of directory
* @param path The path you want to delete
* @return True if it worked;
*/
static public boolean deleteDirectory(File path) {
if (path.exists()) {
File[] files = path.listFiles();
for (int x = 0; x < files.length; x++) {
if (files[x].isDirectory())
deleteDirectory(files[x]);
else
files[x].delete();
}//end for
}///end if
return (path.delete());
}//endDeleteDirectory
}//end class