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

202

Meine Frau hat mehrere Dateien und Ordner, die auf irgendeine Weise Dateinamen haben, die dazu geführt haben, dass sie auf normale Weise oder über die Befehlszeile nicht mehr löschbar sind (nicht gelöscht werden können). Ich glaube, die Dateinamen sind aufgrund der Tiefe der Ordnerstrukturen zu lang. Kennt jemand ein gutes Dienstprogramm zum Bereinigen von Dateien wie folgt?

user3048
quelle
Wie wurden diese Dateien erstellt?
Nick
Entschuldigen Sie meine Unkenntnis zu diesem Thema, aber sollte Windows diese Dateien nicht verarbeiten? Sollte das, was Eddins veröffentlicht, nicht automatisch von Windows ausgeführt werden (sogar aus dem Explorer)?
Stefanos Kalantzis
2
@ Mokubai- Die doppelte Frage sollte als Duplikat dieser Frage markiert werden, da diese Frage älter ist .
AStopher
1
@cybermonkey: Und es hat eine bessere Antwort.
Ellesedil
Für weitere Leser ist die 7zip-Methode mit CTRL+DELETE meiner Meinung nach die einfachste Methode ...
Christian Gollhardt

Antworten:

426

Wenn Sie ein Verzeichnis, das lange Pfade enthält, vollständig löschen möchten, robocopyfunktioniert das SEHR gut:

mkdir empty_dir
robocopy empty_dir the_dir_to_delete /mir
rmdir empty_dir
rmdir the_dir_to_delete

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

Möglicherweise müssen Sie diesen Vorgang mehrmals durchführen, um alle Dateien zu entfernen.

Benoit
quelle
1
Effizient, wenn im Dateisystem kein Kurzname (8.3) gespeichert ist.
Antoine RODRIGUEZ
1
Dies funktionierte gut mit meinen hartnäckigen Windows Store- Cache-Dateien , die sich weigerten, gelöscht zu werden. Vielen Dank!
Samir
1
Ich musste die Robocopy-Zeile hinzufügen / löschen, damit dies funktioniert, aber es hat den Trick danach
getan
3
Robocopy hat mich in dieses Durcheinander gebracht, aber es ist mir nie in den Sinn gekommen, Robocopy zu verwenden, um mich herauszuholen. Gute Antwort! Vielen Dank!
Jay Michaud
2
@ SarahofGaia, meine schlechte, es ist 2¹ it's - 1 tatsächlich
Benoit
91

An einer Eingabeaufforderung:

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
Will Eddins
quelle
1
Ich mag das, es ist ein gutes Stück Querdenken.
Col
Ich kann zwar nicht garantieren, dass es in diesem Fall funktioniert, aber ich habe es mehrmals verwendet, um Ordner zu löschen, deren Zeichen am Ende ungültig sind und die auf normale Weise nicht gelöscht werden können.
Will Eddins
1
Dies funktioniert für Dateien und Ordner im aktuellen Verzeichnis, aber wenn Sie es irgendwie schaffen, sich in einem Ordner zu befinden, dessen Pfad zu lang ist, hilft dies nichts. Zum Beispiel bin ich derzeit in einer Konsole in einem zu langen Pfad und kann nicht einmal diroder cd ...
Bobson
1
@Bobson Wenn Sie nicht dirverwenden pushdstatt. Das hat bei mir geklappt.
BadHorsie
4
Dies funktioniert nicht mit Windows 10, der angezeigte Dateiname ist der lange
Loenix
53

Ich arbeite mich schrittweise in den Pfad ein, benenne jeden nachfolgenden übergeordneten Ordner in "1" um und versuche, ihn zu löschen. Sie verkürzen den Pfad jedes Mal effektiv und ich musste nie mehr als 4 oder 5 Verzeichnisse bearbeiten, bis ich endlich in der Lage bin, die gesamte Verzeichnisstruktur zu löschen (die möglicherweise Ihren Wünschen entspricht oder nicht). Sie können dies auch aus dem letzten untergeordneten Ordner heraus tun und sich nach oben oder unten arbeiten.

Joeqwerty
quelle
7
Dies war das einzige, was für mich funktioniert hat. Alle anderen Tricks, die hier und in anderen Foren wie diesem aufgeführt wurden, haben nicht funktioniert.
Andrew Arnott
War der einzige Vorschlag, der seltsamerweise funktionierte.
Nestor Ledon
Das hat bei mir funktioniert, eine Abkürzung, die mir geholfen hat mv * 1 && cd 1. Dies hat nicht funktioniert, wenn sich mehrere Dateien im Verzeichnis befunden haben, aber zu diesem Zeitpunkt hat es rm -rf *normalerweise geklappt.
Alexander Varwijk
1
Kann dies nicht in Windows 10 tun ... Umbenennen wirft "Dateiname zu lang" Fehler
Dawesi
3
Dies hat nicht nur das Problem für mich behoben, sondern auch erklärt, wie ich überhaupt zum Problem gekommen bin. Ich muss einen Pfad gehabt haben, der nahe am Limit lag, dann habe ich einen übergeordneten Ordner umbenannt (dem Namen wurde etwas wie "backup Nov 2016 save" hinzugefügt), wodurch die Dateien in Unterordnern über das Limit verschoben wurden. Es ist gut, die Ursache und die Lösung zu kennen, auch wenn ich weiß, dass es auch auf andere Weise passieren kann. Ich denke, dies ist eine übliche Art und Weise, wie es den Leuten passiert.
Eselk
13

In einigen Programmen, einschließlich Command Prompt ( cmd.exe), können Sie die maximale Dateilänge umgehen, indem Sie dem vollständigen Pfad Folgendes voranstellen \\.\:

\\. \ C: \ irgendein Verzeichnis \ anderes Verzeichnis \ eine Datei mit langem Namen
Grawity
quelle
3
funktioniert nicht in Windows 10
Dawesi
danke, cmd hat in Win7rm -rf \\directoryname
Philip Pryde
13

Ein Trick, den ich verwendet habe, um die Längenbeschränkung für "vollständigen Pfad und Dateinamen" zu umgehen, um etwas zu verschieben, zu kopieren oder zu löschen, besteht darin, es mit einem zugeordneten Laufwerksbuchstaben zu kürzen, der auf einen Ordner zeigt Weg den Weg hinunter .

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

Ordnen Sie dann irgendwo entlang des Pfades einen beliebigen Laufwerksbuchstaben zu, sodass der erste Abschnitt des Pfades nur wenige Zeichen lang wird. Voraussetzung: Der Ordner muss sich in einem freigegebenen Ordner befinden (möglicherweise bereits, wenn er sich auf einem Server befindet, wo ich dies getan habe). Wenn dies noch nicht geschehen ist, wählen Sie einen Ordner im Pfad aus und teile es. Erlauben Sie je nach Ihrer Umgebung und Paranoia-Stufe jedem, den Zugriff auf die Freigabe zu ändern, solange die NTFS-Berechtigungen einigermaßen eingeschränkt sind. Wenn Sie möchten, können Sie nur die Änderungsrechte für Ihr eigenes Konto zulassen.

Wechseln Sie nun zu dem 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 dies tun

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

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

(Das "/ persistent: no" bedeutet, dass dies beim nächsten Neustart nicht überlebt und Sie später verwirrt. Vergessen Sie nicht, die Freigabe Ihres Ordners aufzuheben, wenn Sie fertig sind.)

Denken Sie daran, dass Sie den Ordner mit der Datei nicht unbedingt freigeben müssen. Befindet sich der Ordner bereits in einem freigegebenen Ordner, können Sie ihn einfach über die Freigabe und die verschachtelten Ordner einem Zielordner in der Nähe der Datei zuordnen.

Ich musste diese Technik verwenden, um eine massive Robokopie zwischen zwei Servern durchzuführen, als wir feststellten, dass Benutzer Laufwerke ziemlich tief in der Ordnerstruktur zugeordnet hatten, so dass sie 255 Zeichen von dort verwenden konnten, was jedoch die Gesamtlänge des Dateipfads überschritt beim Zugriff vom lokalen Laufwerkstamm.

AdamV
quelle
4
Sie können das Teilen vermeiden, indem Sie subst x: C:\Some\first\part\of\the\long\pathdas Laufwerk mitsubst x: /d
mihi
1
Netter Versuch, aber wenn Sie 10 von k verschachtelten Ordnern haben, ist das nicht möglich.
Julian Knight
Der substTrick scheint gut zu funktionieren, solange der Dateiname nicht so lang ist, dass er selbst im Stammverzeichnis eines Laufwerks mehr als 260 Zeichen umfasst.
Stephen Chung
Sie müssen auch keinen Ordner explizit net usenet use x: \\localhost\c$\bar\folders /persistent:no
freigeben
9

Der einfachste Weg, den ich gefunden habe, ist das Booten von einer Ubuntu-Live-CD.

Alternativ können Sie auf halber Strecke des Pfades einen freigegebenen Ordner erstellen und diesem dann ein Netzwerklaufwerk zuordnen und den Löschvorgang aus dem zugeordneten Ordner ausführen (auch auf demselben Computer).

Col
quelle
17
Es ist lustig, wie oft eine Ubuntu Live-CD bei der Behebung von Windows-Problemen hilft ^^
Ivo Flipse
1
Ich habe bemerkt, dass ich selbst, ein zweifelhaftes Netzwerk, eine Live-CD, ein Dateisystemproblem, eine Live-CD, eine beschädigte Partitionstabelle usw. usw. versuche :-)
Col
Dies ist die einzige Lösung, die für mich funktioniert hat. Ich liebe dich, Linux! <3
David Frye
1
Führen Sie Bash unter Windows aus. Kein Linux erforderlich. ;-) Auch wenn Sie Windows 10 verwenden, installieren Sie einfach "Windows Subsystem for Linux". Grundsätzlich verwendet Windows Ubuntu-API-Hooks, um die Aufgabe zu erledigen. sortieren, xargs, md5sum, gpg, curl, wget, apache, mysql, python, perl, rubin, php, gcc, tar, vim, emacs, diff, patch und die meisten zehntausenden Binärpakete im Ubuntu-Archiv! "Dies ist eine sehr vollständige Linux - Entwicklungsumgebung, die zufällig unter Windows ausgeführt wird. 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
5

Benennen Sie das Verzeichnis zum Ausschneiden / Einfügen der Datei an einer anderen Stelle um, und löschen Sie sie dann. Funktioniert hier.

Oder einfach von der Eingabeaufforderung aus, wenn Sie keine Lust haben, sich die Mühe zu machen.

Turm
quelle
Das wirkt wie ein Zauber. Dort unten graben (für mich waren es super verschachtelte node_modulesOrdner), auf den Desktop ziehen und löschen. Spülen und wiederholen Sie den Vorgang, während Sie mehrere Ordner gleichzeitig öffnen. Was für ein widerliches Problem.
Nickb
7
Das hat bei mir nicht geklappt - der Einfügevorgang ist wegen des langen Dateinamens fehlgeschlagen - egal wo er ausgeschnitten wurde.
UpTheCreek
1

Wahrscheinlich nicht der beste Weg und ich bin interessiert zu sehen, was andere sich einfallen lassen -

Ich hatte dies einmal und habe ein paar Dinge ohne Glück versucht. Anstatt nach einem guten Tool zu suchen, habe ich es mit der Windows Disk neu gestartet, bin zur Wiederherstellungskonsole gegangen und habe es einfach von dort gelöscht. Das erste Mal funktioniert und wirklich gut!

Ich habe gerade ein Google für Sie durchgeführt und festgestellt, dass DelinvFile gut aussieht, aber nicht dafür bürgen kann.

Bearbeiten - Achtung, soeben gesehen ist das nur ein Versuch - Vielleicht nicht so gut wie ich zuerst gedacht habe!

William Hilsum
quelle
Der kostenlose rimraf funktioniert einwandfrei und hat funktioniert, als alle anderen Ideen fehlgeschlagen sind. Es erfordert node.js
Julian Knight