wake-up-neo.net

So löschen Sie einen langen Pfad in Windows.

Beim Importieren eines Projekts in Eclipse begann es irgendwie, rekursive Versionen des Verzeichnisses zu erstellen. 

Wenn ich jetzt versuche, etwas zu löschen, erhalte ich die Meldung "Der angegebene Dateiname ist zu lang."

Ich kann es nicht aus dem Befehl Shell löschen. Ich kann es nicht aus dem Explorer löschen. Ich kann damit ALLES nicht machen. Ich habe keine Ahnung, wie viele Exemplare Eclipse erstellt hat. Eclipse lief etwa eine Minute, bevor mir klar wurde, dass etwas nicht stimmte und ich die Operation abbrach. 

Ich kann die Eigenschaften des Ordners der obersten Ebene abrufen und besagt, dass er 497 Ordner enthält. 

Frage 1: Wie kann ich all das in Windows löschen? 

Frage 2: Was zur Hölle dachte Eclipse? 

58
Baltimark

Ich hatte ein ähnliches Problem wie Eclipse: Beim Versuch, ein Projekt mithilfe von Subclipse zu importieren, wurde eine tief verschachtelte Gruppe von Verzeichnissen generiert, die ich nicht löschen konnte.

Ich habe ein paar Dinge getan, erstens habe ich die Verzeichnisnamen auf die kürzeste mögliche Länge bearbeitet (eigentlich halte ich das für sinnlos). Zweitens durchquerte ich den Verzeichnisbaum so tief wie möglich, schnitt den Zweig aus und fügte ihn ein (wodurch der ursprüngliche Zweig gelöscht werden kann). Anschließend wurde der Vorgang wiederholt. 

Die Lösungen von @Charlie und @ Tomalek scheinen eleganter zu sein. Ich habe nicht vor, die Erfahrung zu wiederholen, um es herauszufinden.

19
Ian Hopkinson
robocopy empty_dir base_nested_dir /purge

Beispiel: Wenn Sie einen zu langen Ordnerpfad haben, z. B .:

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

befolgen Sie diese Anweisungen, um es zu löschen.

  1. Erstellen Sie einen leeren Ordner, z. B. C:\Users\Name\Desktop\temp.
  2. Öffnen Sie ein Eingabeaufforderungsfenster.
  3. Typ robocopy C:\Users\Name\Desktop\temp D:\BackupFolder /purge

Hinweis: Wenn sich in Schritt 3 in einem der Pfade Leerzeichen befinden, muss der Pfad in Anführungszeichen gesetzt werden.

159
gonsalu

7Zip ist die ultimative Lösung, wenn Sie mit der Befehlszeile nicht vertraut sind.

  1. Öffnen Sie den 7Zip-Dateimanager
  2. Navigieren Sie zu Ihrer Datei
  3. Umschalttaste - Löschen Sie Ihre Datei

Prost!

85
Swanidhi

Zu Q1) 

Verwenden Sie subst, um die Pfade kurzzuschließen:

subst Q: C:\very\long\path\created\by\Eclipse
Q:
del *.*

Zu Q2)

Lange Pfade sind in anderen Betriebssystemen weniger problematisch, und es gibt Windows-API-Funktionen, die can mit Pfaden behandeln, die länger als 255 Zeichen sind.

12
Tomalak

Wenn Sie mit Pfaden länger als MAX_PATH umgehen müssen, müssen Sie die Unicode-Versionen der Windows-Datei-APIs (z. B. DeleteFileW ) und das Präfix \\?\Verwenden. Sie können mit diesen APIs ein kurzes Programm schreiben, um diese Verzeichnisse aufzuzählen und sie zu löschen.

10
Charlie

Das Update ist einfach und kostenlos! Die Ordner müssen nicht umbenannt werden.

  1. Cygwin kostenlos herunterladen.

  2. verwenden Sie den Befehl rm -f -r <folder-name> und warten Sie einige Augenblicke.

Ich hatte einen Ordner der Größe 1,5 GB mit zahlreichen inneren Ordnern und es hat funktioniert!

6
Haitham Sweilem

Die vorherigen drei Antworten sind offensichtlich Spam (für eine Payware-Demo). Wenn Sie eine kostenlose Ein-Klick-Lösung wünschen, finden Sie hier:

http://www.osmstudios.com/Display.asp?Page=pathtoolong

Was wahrscheinlich das 3-Zeilen-Java von weiter oben in diesem Thread einsetzt.

-fm

4
F.M.

Eine in diesem Windows Sysinternals-Forum veröffentlichte Methode hat von maxaha1 funktioniert.

Ich schlage vor, dass Sie von oben nach unten arbeiten. Solange Sie innerhalb derselben bleiben Volume (Freigabe) können Sie normalerweise die Verzeichnisse der oberen Ebene auf .__ ziehen. neue Eltern, ohne Rücksicht auf den Inhalt des Verzeichnisses gezogen (dh und die Länge/Rekursionsprobleme). So Sie nehmen ein Verzeichnis mit vielleicht 4 oder 5 Stufen in Ihrem Problempfad und ziehe es zur Wurzel. Dann lösche den ursprünglichen Pfad jetzt nur noch enthält ein paar Ebenen. Idealerweise sollte der längste Weg zu weniger als 250 Zeichen (einschließlich Dateinamen). Ich mache eine Systemmigration bei Im Moment haben wir einige Benutzer mit mehr als 340 Zeichenpfaden, die nicht Kopieren Sie ohne diese Methode. Ich habe Substs rekursive Net Use's .__ ausprobiert. rekursive Skripte usw .. Leider scheinen Benutzer in der Lage zu sein kreieren Sie Dinge, die die besten Programmierer, Admins usw. verwirren.

Erstellen Sie neue Ordner und ziehen Sie sie einfach per Drag-and-Drop nach oben (und löschen Sie sie), bis Sie alles sauber gemacht haben.

4
Izzy Weird

ich hatte das gleiche Problem mit Eclipse ...! Es wurden unzählige verschachtelte Ordner erstellt, die mehr als 500 MB Speicherplatz beanspruchten.

ich habe eine Menge Dinge in Fenstern versucht und nichts hat funktioniert .. 

schließlich habe ich einfach mit Ubuntu einen Neustart durchgeführt und diesen schrecklichen Ordner gelöscht .. einfach so .. ubuntu scheint keine solchen Zugriffsbeschränkungen zu haben, die auf der Dateipfadlänge basieren, da Windows dies tut ... und macht das Leben viel einfacher .. :)

4
rachel

Jemand oben hat bereits einen Verweis auf "rimraf" gepostet, aber ich möchte noch mehr Details hinzufügen. Wenn Sie Node auf Ihrem System installiert haben, verwenden Sie einfach das Modul rimraf (es kann auf Ihrem Pfad installiert werden). Dies ist bei weitem die einfachste Methode zum Löschen von Dingen auf einem Windows-System in den nicht ganz unbedeutenden Fällen. Rimraf ist nicht so toll, eigentlich weil Node.js Dateisysteme auf der Ebene des Gerätekerns handhabt. Wenn Sie sich den Quellcode des Moduls 'fs' für Node ansehen, sehen Sie Code wie this . Im Grunde geht Node.js mit Dateisystemen viel besser um als Git für Windows, d. H. Es gibt einen Fehler bei der Verwendung von git clean -fdx unter Windows, der Ordner mit langen Pfadnamen nicht löscht. 

3
lateralpunk

Programmgesteuert können Sie mit DeleteFileW und RemoveDirectoryW löschen und den Dateinamen L"\\?\" voranstellen. Beachten Sie, dass Sie die W-Version und nicht die A-Version der APIs verwenden müssen.

3
John

Die Option MIR (Spiegeln eines vollständigen Verzeichnisbaums) hat für mich auch in Fenstern und Fensternetzpfaden funktioniert.

robocopy empty_dir <foldertobedeleted> /MIR

  • Erstellen Sie einfach ein leeres Verzeichnis, und weisen Sie robocopy an, alles im Zielverzeichnis zu löschen, das nicht im leeren Verzeichnis liegt 

ausgabe wäre so ..

 enter image description here >

1
Ram Ghadiyaram

Ich war mit keiner der hier und an anderen Stellen veröffentlichten Lösungen (Robocopy, 7Zip, Subst, schattige Spyware) wirklich zufrieden. 

Es kann eine Datei oder ein gesamtes Verzeichnis rekursiv löschen. Vielleicht werde ich in Zukunft weitere Optionen hinzufügen. 

Das Tool heißt SuperDelete und kann auf der Releases-Seite GitHub abgerufen werden. 

1
Marcel N.

Lol Ich hatte vor einigen Jahren ein ähnliches Problem. Aufgrund eines Fehlers habe ich eine unbegrenzte Verschachtelung von Ordnern erstellt, bis der Dateiname zu lang wurde. 

IIRC, ich habe sie programmgesteuert gelöscht, indem ich die Ordnerstruktur durchforstete.

1
Zesty

Okay, ich habe versucht, nach einer Lösung dafür zu suchen, und fand eine der einfachsten Lösungen für Windows-Benutzer

  1. Installiere Mobaxterm
  2. Mobaxterm öffnen. Wechseln Sie in das Verzeichnis, das Sie löschen möchten (mit cd), und führen Sie den folgenden Befehl aus

    rm -rf Verzeichnisname

Alle Ordner, Unterordner, in denen Windows das Löschen beanstandet hat, werden jetzt gelöscht

1
Pratik Shelar

Es ist ziemlich ärgerlich, dass dies für uns Windows-Benutzer 2016 immer noch ein Problem darstellt, als Linux dies vor Jahren gelöst hat. Umso ärgerlicher wird es, wenn es in Java einfach ist.

Wir sollten das Change.org nutzen, um MS zu bitten, diese Fähigkeit einzubeziehen. Es kann nicht schwer sein. Wenn sie sich Sorgen über die Rückwärtskompatibilität machen, können Sie nicht einfach einen strengen Modus verwenden, den Administratoren aktivieren oder deaktivieren können. Gib uns wenigstens die Warnung, erlaube uns aber, es trotzdem zu löschen. GRRRRR [/ rant]

Wenn Sie Java auf Ihrem Computer ausführen, kann dieser Code hilfreich sein:

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
0
Andrew S