Frage Wie lösche ich eine Datei in Windows mit einem zu langen Dateinamen? [Duplikat]


Diese Frage hat hier bereits eine Antwort:

Meine Frau hat mehrere Dateien und Ordner, die auf irgendeine Art und Weise mit Dateinamen versehen wurden, die dazu führten, dass sie nicht löschbar waren (können nicht gelöscht werden), auf normale Weise oder über die Befehlszeile. Ich glaube, dass die Dateinamen aufgrund der Tiefe der Ordnerstrukturen zu lang sind. Kennt jemand ein gutes Dienstprogramm zum Aufräumen solcher Dateien?


195
2017-09-23 15:56


Ursprung


Wie wurden diese Dateien erstellt? - Nick
Sorry für meine Ignoranz zu diesem Thema, aber sollte Windows nicht mit diesen Dateien umgehen? Sollte nicht was von Eddins gepostet werden automatisch von Windows (sogar von Explorer) getan werden? - Stefanos Kalantzis
@ Mokubai - Die doppelte Frage sollte ein Duplikat von diesem markiert werden, als Diese Frage ist älter. - cybermonkey
@cybermonkey: Und es hat eine bessere Antwort. - Ellesedil
Für weitere Leser, die 7zip Methode mit CTRL + DELETE ist meiner Meinung nach die einfachste Methode ... - Christian Gollhardt


Antworten:


Wenn Sie ein Verzeichnis komplett löschen wollen und es eine Datei mit langen Namen darin hat, macht robocopy eine SEHR gute Arbeit:

mkdir empty_dir
robocopy empty_dir the_dir_to_delete /s /mir
rmdir empty_dir
rmdir the_dir_to_delete

Dies funktioniert, weil intern robocopy verwendet die Unicode-aware-Versionen von Win32-Funktionen, mit der \\?\ Präfix für Dateipfade; Diese Funktionen haben eine Grenze von 2¹⁶-1 (32.767) Zeichen anstelle von 259.

Möglicherweise müssen Sie diesen Vorgang mehrmals durchlaufen, um alle Dateien zu löschen.


415
2017-08-29 13:38



Effizient, wenn kein Kurzname (8.3) im Dateisystem gespeichert ist. - Antoine RODRIGUEZ
Das hat gut mit meinem hartnäckigen Windows Store funktioniert Cache-Dateien das weigerte sich gelöscht zu werden. Vielen Dank! - Samir
Ich musste der Robocopy-Zeile hinzufügen / löschen, damit dies funktioniert, aber danach hat es sich gelohnt - actionshrimp
Robocopy hat mich in dieses Durcheinander gebracht, aber Robocopy kam mir nie in den Sinn, mich rauszuholen. Gute Antwort! Vielen Dank! - Jay Michaud
@SarahofGaia, mein Schlechter, es ist tatsächlich 2¹⁶ - 1 - Benoit


Von einer Eingabeaufforderung aus:

dir /X

Dadurch werden Ihre Dateien / Ordner im Kurznamenformat aufgelistet. Verwenden Sie dann den Kurznamen genau so, wie er geschrieben wurde, um die Datei zu löschen:

del LONGF~1.txt

89
2017-09-23 16:01



Ich mag das, es ist ein gutes Stück Querdenken. - Col
Obwohl ich nicht garantieren kann, dass es in diesem Fall funktioniert, habe ich es mehrmals verwendet, um Ordner zu löschen, die am Ende ungültige Zeichen enthalten, die es unmöglich machen, sie auf normale Weise zu löschen. - Will Eddins
Dies funktioniert für Dateien und Ordner im aktuellen Verzeichnis, aber wenn Sie es irgendwie schaffen, sich selbst zu finden Innerhalb Ein Ordner, dessen Pfad zu lang ist, wird nicht helfen. Zum Beispiel, ich bin derzeit in einer Konsole in einem zu langen Pfad und kann nicht einmal dir oder cd ... - Bobson
@Bobson Wenn du nicht kannst dir benutzen pushd stattdessen. Das hat für mich funktioniert. - BadHorsie
Dies funktioniert nicht mit Windows 10, der angezeigte Dateiname ist der lange - Loenix


Ich arbeite mich progressiv in den Pfad ein, benenne jeden nachfolgenden übergeordneten Ordner in "1" um und versuche zu löschen. Sie kürzen den Pfad effektiv jedes Mal und ich musste nie mehr als 4 oder 5 Verzeichnisse bearbeiten, bis ich endlich die gesamte Verzeichnisstruktur löschen konnte (was vielleicht nicht das ist, was Sie wollen). Sie können dies auch vom letzten Kind-Ordner aus tun und sich hoch oder runter arbeiten.


51
2017-09-23 17:40



Das war das einzige, was für mich funktionierte. Alle anderen Tricks, die hier und in anderen Foren gegeben wurden, haben nicht funktioniert. - Andrew Arnott
Froh, dass ich Helfen kann... - joeqwerty
War der einzige Vorschlag, der merkwürdig genug arbeitete. - Nestor Ledon
Kann nicht in Windows 10 tun ... Umbenennen wirft "Dateiname zu lang" Fehler - Dawesi
Das hat nicht nur das Problem für mich gelöst, es erklärt auch, wie ich das Problem überhaupt gelöst habe. Ich musste einen Pfad haben, der nahe am Limit war, dann habe ich einen übergeordneten Ordner umbenannt (etwas wie "backup Nov 2016 save" zum Namen hinzugefügt), der die Dateien in Unterordnern über das Limit geschoben hat. Gut zu wissen, die Ursache als auch die Lösung, auch wenn ich weiß, dass es auch andere Wege passieren kann, denke ich, ist dies eine allgemeine Art und Weise passiert es mit Leuten. - eselk


In einigen Programmen, einschließlich der Eingabeaufforderung (cmd.exe), können Sie die Begrenzung der Dateilänge umgehen, indem Sie den vollständigen Pfad voranstellen \\.\ so was:

\\. \ C: \ irgendein Verzeichnis \ anderes Verzeichnis \ eine Datei mit langem Namen

13
2017-09-23 16:12



funktioniert nicht in Windows 10 - Dawesi
danke, cmd hat mit diesem in Win7 einen charm gemacht rm -rf \\directoryname - Philip Pryde


Ein Trick, den ich benutzt habe, um die "volle Pfad- und Dateinamen" -Länge zu umgehen, um etwas zu verschieben, zu kopieren oder zu löschen, ist, es zu verkürzen, indem man halbwegs (oder mehr) einbricht. Verwenden eines zugeordneten Laufwerkbuchstabens, der auf einen Ordner im Pfad verweist.

Sie haben also c: \ some \ long \ path ... \ und \ foo \ bar \ folders \ oldfiles \ myoldfile.txt.

Ordnen Sie dann einen beliebigen Laufwerksbuchstaben irgendwo auf dem Pfad zu, so dass der erste Teil des Pfads nur wenige Zeichen lang wird. Voraussetzung - Der Ordner muss sich in einem freigegebenen Ordner befinden (möglicherweise bereits auf einem Server, wo dies erforderlich ist). Wenn dies nicht bereits der Fall ist, wählen Sie einen Ordner irgendwo im Pfad aus und teile es. Abhängig von Ihrer Umgebungs- und Paranoia-Ebene können alle den Zugriff auf die Freigabe ändern, solange die NTFS-Berechtigungen einigermaßen restriktiv sind. Wenn Sie möchten, lassen Sie die Änderungsrechte nur für Ihr eigenes Konto zu.

Gehen Sie jetzt zum freigegebenen Ordner oder einem darin enthaltenen Ordner und geben Sie ihn frei oder verwenden Sie die Befehlszeile wie folgt. Angenommen, Sie haben den Ordner "foo" als "fooshare" freigegeben, dann könnten Sie das tun

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

und das X: Laufwerk zeigt jetzt direkt auf den Ordner "Ordner" innerhalb dieser Freigabe, so dass "x: \ oldfiles \ myoldfile.txt" jetzt ziemlich kurz ist.

(Das "/ persistent: no" bedeutet, dass dies den nächsten Neustart nicht überleben und Sie später verwirren wird. Vergessen Sie nicht, Ihren Ordner nach der Fertigstellung freizugeben.)

Denken Sie daran, dass Sie den Ordner, der die Datei enthält, nicht notwendigerweise teilen müssen, wenn er sich bereits in einem freigegebenen Ordner befindet, den Sie einfach zuordnen können durch die Freigabe und die verschachtelten Ordner in einen Zielordner in der Nähe von in die Datei und das funktioniert gut.

Ich musste diese Technik verwenden, um eine massive Robocopy zwischen zwei Servern durchzuführen, als wir feststellten, dass die Benutzer Laufwerke ziemlich tief in der Ordnerstruktur zugeordnet hatten, so dass sie 255 Zeichen von dort verwenden konnten, aber die Gesamtlänge des Dateipfads überschritten wenn von der lokalen Laufwerkswurzel aus zugegriffen wird.


13
2018-02-21 17:18



Sie können die Freigabe durch Verwendung vermeiden subst x: C:\Some\first\part\of\the\long\path und löschen Sie anschließend das Laufwerk mit subst x: /d - mihi
Netter Versuch, aber wenn Sie 10 von k von Ordnern geschachtelt haben, ist es nicht möglich. - Julian Knight
Das subst Trick scheint gut zu funktionieren, solange der Dateiname nicht ist damit bis hin zu mehr als 260 Zeichen, sogar an der Wurzel eines Laufwerks. - Stephen Chung
Sie müssen auch keinen Ordner explizit mit freigeben net useSie können die Standard-Admin-Freigaben verwenden: net use x: \\localhost\c$\bar\folders /persistent:no - kapex


Der einfachste Weg, den ich gefunden habe, ist von einer Ubuntu Live CD zu booten.

Alternativ können Sie einen freigegebenen Ordner in der Mitte des Pfads erstellen und dann ein Netzlaufwerk zuordnen und das Löschen aus dem zugeordneten Ordner durchführen (sogar auf demselben Computer).


9
2017-09-23 15:59



Es ist witzig, wie oft eine Ubuntu Live CD bei der Behebung von Windows Problemen hilft ^^ - Ivo Flipse♦
Ich habe bemerkt, dass ich selbst, dubioses Netzwerk versuche eine Live-CD, Dateisystemproblem versuche eine Live-CD, korrupte Partitionstabelle etc. etc. :-) - Col
Dies ist die einzige Lösung, die für mich funktioniert hat. Ich liebe dich, Linux! <3 - David Frye
Bash von Windows ausführen Kein Linux erforderlich. ;-) Wenn du Windows 10 ausführst installiere einfach "Windows Subsystem für Linux" im Grunde benutzt Windows Ubuntu API Hooks, um den Job zu erledigen ... utils inklusive "apt, ssh, rsync, finden, grep, awk, sed, sort, xargs, md5sum, gpg, locken, wget, apache, mysql, python, perl, rubin, php, gcc, tar, vim, emacs, diff, patch und die meisten Zehntausende Binärpakete in den Ubuntu-Archiven! "Dies ist eine sehr vollständige Linux-Entwicklungsumgebung, die zufällig unter Windows läuft. zdnet.com/article/ubuntu-and-bash-arrive-on-windows-10 - Dawesi
Cygwin ist eine weitere Alternative zum Ausführen von LINUX-Befehlen in Windows - atom88


Benennen Sie das Verzeichnis um, indem Sie die Datei irgendwo anders einfügen und dann löschen. Funktioniert hier.

Oder nur von der Eingabeaufforderung aus, wenn Sie keine Probleme haben möchten.


5
2017-09-23 19:39



Das funktioniert wie ein Zauber. Grabe dort nach unten (für mich war es superverschachtelt) node_modules Ordner), ziehen Sie es auf Ihren Desktop und löschen Sie es. Spülen und wiederholen Sie den Vorgang, wenn Sie mehrere Ordner gleichzeitig hochgehen. Was für ein widerliches Problem. - nickb
Das hat bei mir nicht funktioniert - der Einfügevorgang ist wegen des langen Dateinamens fehlgeschlagen - egal, wo geschnitten. - UpTheCreek


Wahrscheinlich nicht der beste Weg und ich bin interessiert zu sehen, was andere kommen -

Ich hatte das einmal und habe ein paar Dinge ohne Glück versucht. Anstatt nach einem guten Tool zu suchen, habe ich mit der Windows-Diskette neu gestartet, bin zur Wiederherstellungskonsole gegangen und habe sie einfach von dort gelöscht. Arbeitete zum ersten Mal und wirklich gut!

Habe eben ein Google für dich gemacht und folgendes gefunden - DelinvFile Sieht gut aus, kann aber nicht dafür bürgen.

Bearbeiten - Warnung, nur das oben genannte ist nur ein Versuch - Vielleicht nicht so gut, wie ich zuerst dachte!


1
2017-09-23 16:00



Das freie Rimraf funktioniert gut und funktionierte, wenn alle anderen Ideen fehlschlugen. Es erfordert node.js - Julian Knight