Dies ist eigentlich ganz einfach zu beheben. Angenommen, die Verzeichnisstruktur lautet wie folgt:
C:\Dir1\Dir1\Dir1\Dir1…
Um das Problem zu beheben, benennen Sie einfach jeden Ordner in einen aus einem Zeichen bestehenden Ordnernamen um, bis das Löschen nicht mehr zu lange dauert:
- Umbenennen
C:\Dir1
inC:\D
- Navigiere zu
C:\D\
- Umbenennen
C:\D\Dir1
inC:\D\D
- Navigiere zu
C:\D\D\
- Gehe zu 1, bis die Gesamtlänge des Pfades <260 ist
Hier ist eine Batch-Datei zur Automatisierung des Prozesses (diese einfache Version eignet sich am besten für einfache Verzeichnisse wie das in der Frage beschriebene, insbesondere für Einwegverzeichnisse). Übergebe es dem höchstmöglichen Ordner (zB C:\Dir1
für C:\Dir1\Dir1\Dir1…
oder C:\Users\Bob\Desktop\New Folder
für C:\Users\Bob\Desktop\New Folder\abcdefghi…
)
@echo off
if not (%1)==() cd %1
for /D %%i in (*) do if not %%i==_ ren "%%i" _
pushd _
%0
popd
Technische Erklärung
Die anderen vorgeschlagenen Lösungen sind rückwärts; Sie können es nicht beheben, indem Sie sich vom innersten Verzeichnis nach außen arbeiten. Sie müssen in die andere Richtung gehen.
Wenn Sie versuchen, auf ein Verzeichnis zuzugreifen, verwenden Sie explizit oder nicht explizit dessen absoluten Pfad, der alles beinhaltet, was davor stand. Daher C:\Dir1\Dir1\Dir1\Dir1
beträgt für eine Verzeichnisstruktur wie Dir1
22 die Länge des Pfads zum Innersten . Die Länge des Pfads zum Äußersten Dir1
beträgt jedoch nur 7 und ist daher unabhängig von seinem Inhalt (im Kontext des Pfads eines bestimmten Verzeichnisses) immer noch zugänglich hat das Dateisystem keine Kenntnis darüber, was es enthält oder welche Auswirkungen es auf die Gesamtpfadlänge seiner untergeordneten Verzeichnisse hat, sondern nur auf seine Vorgängerverzeichnisse - Sie können ein Verzeichnis nicht umbenennen, wenn die Gesamtpfadlänge zu lang ist.
Wenn Sie auf einen zu langen Pfad stoßen, müssen Sie daher zur höchstmöglichen Ebene wechseln und sie in einen Namen mit einem Buchstaben umbenennen und für jede Ebene darin wiederholen. Jedes Mal, wenn Sie dies tun, verkürzt sich die Gesamtlänge des Pfads um den Unterschied zwischen dem alten und dem neuen Namen.
Auch das Gegenteil ist der Fall. Sie können keinen Pfad erstellen, der die maximal unterstützte Länge überschreitet (unter DOS und Windows MAX_PATH = 260
). Sie können Verzeichnisse jedoch von innen nach außen in einen längeren Namen umbenennen. Das Ergebnis ist, dass auf tiefere Ordner mit einem absoluten Pfad von> 260 nicht zugegriffen werden kann. (Das macht sie nicht "versteckt" oder sicher, da sie einfach genug sind, um darauf zuzugreifen. Verwenden Sie diese Methode also nicht, um Dateien auszublenden.)
Interessante Randnotiz
Wenn Sie Ordner in Windows 7 Explorer erstellen, kann es so aussehen, als ob Sie in Explorer Unterverzeichnisse erstellen können, deren Gesamtlänge länger ist als MAX_PATH
und tatsächlich betrügt dies jedoch tatsächlich mit „DOS 8.3-Dateinamen“. Sie können dies anzeigen, indem Sie einen Baum wie den folgenden erstellen:
C:\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\
Es ist 696 Zeichen lang, was natürlich viel länger als 260 Zeichen ist. Wenn Sie im Explorer zum innersten Unterverzeichnis navigieren, wird es erwartungsgemäß in der Adressleiste angezeigt, wenn es nicht im Fokus ist, aber wenn Sie auf die Adresse klicken In der Leiste ändert sich der Pfad zu C:\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\
, der nur 102 Zeichen lang ist.
In XP wird dies nicht ausgeführt, stattdessen weigert es sich standhaft, einen längeren Pfad zu erstellen, als unterstützt wird.
Was wirklich interessant wäre, ist herauszufinden, wie Windows 7 Explorer mit zu langen Pfaden umgeht, wenn die NtfsDisable8dot3NameCreation
Option aktiviert ist.