Löschen Sie das durch Robocopy erstellte rekursive Verzeichnis, wenn "Der Dateiname ist zu lang".

9

Nachdem /xjich robocopy.exe ausgeführt hatte, um einen Ordner C: \ Users \ zu sichern, ohne den Schalter zu verwenden, erhielt ich ein rekursives Verzeichnis, das zu lang war. Wenn Sie beispielsweise ausführen dir /b /s, wird die folgende Fehlermeldung angezeigt:

Der Verzeichnisname C: \ Benutzer \ ... \ AppData \ Local \ Anwendungsdaten \ Anwendungsdaten \ Anwendungsdaten \ Anwendungsdaten \ Anwendungsdaten \ Anwendungsdaten \ Anwendungsdaten \ Anwendungsdaten \ Anwendungsdaten \ Anwendungsdaten \ Anwendungsdaten \ Anwendung Daten \ Anwendungsdaten sind zu lang.

Ich habe versucht, es mit zu löschen, rmdir "Application Data" /saber ich habe die Fehlermeldung "Der Dateiname ist zu lang" erhalten.

Ich habe bei anderen Lösungen gesucht, aber ich dachte , ich könnte in der Lage sein , das Werkzeug zu verwenden, verursachte das Problem zu lösen es.

Aaron
quelle

Antworten:

14

Erstellen Sie ein leeres Verzeichnis mit mkdir emptyund verwenden Sie dann, robocopy empty\ "Application Data\" /mir"um den gesamten Verzeichnisbaum zu entfernen. Dann geben Sie ein rmdir emptyund aus, rmdir "Application Dataum aufzuräumen, und Sie sind fertig.

Aaron
quelle
3
+1 Unglaublich, dass es etwas so
Arkanes
Dieser fehlerhafte unendliche rekursive Ordner hat mich verrückt gemacht! Vielen Dank.
Zofren
4

Möglicherweise können cdSie tief genug in das Verzeichnis eindringen, um die darunter liegenden Elemente zu löschen und cdwieder nach oben zu gelangen und die verbleibenden Daten zu löschen.

Wenn das nicht funktioniert und Sie immer noch nicht weiterkommen, laden Sie die kostenlose Demoversion meiner Hamilton C-Shell herunter (vollständige Offenlegung: Ich bin der Autor) und verwenden Sie das rmmitgelieferte Dienstprogramm mit -r(rekursiv) und -x(alles löschen) ) Optionen.

rm -rx directoryname

My rmverwendet intern das neue lange Unicode-Dateinamenformat , mit dem Pfade mit mehr als 32 KB Zeichen bearbeitet werden können.

Wenn Sie feststellen, dass das Problem auch Berechtigungen umfasst, müssen Sie diese möglicherweise verwenden sudooder suerhöhen, z.

sudo rm -rx directoryname

In wirklich hartnäckigen Fällen können Sie durch eine ACL behindert werden, die den Zugriff verhindert, z. B. caclsBerichte Everyone:(DENY). In diesem Fall müssen Sie möglicherweise diesen ACE (Access Control Entry) entfernen.

cacls directoryname /e /r everyone

Schließlich möchte ich wirklich, dass dies hilfreich ist. In meinen Serverprotokollen wird angegeben, dass Benutzer meine Software herunterladen, um dies zu versuchen, und ich möchte, dass dies funktioniert. Wenn Sie auf einen Fall stoßen, in dem dies nicht der Fall ist, werden Sie sich hoffentlich an mich wenden, damit ich das Warum debuggen und es zum Laufen bringen kann. Dinge, die Sie nicht löschen können, passieren häufig und ich möchte, dass alle Fälle abgedeckt werden.

Nicole Hamilton
quelle
3

Sie können auch eine der folgenden Möglichkeiten ausprobieren:

Lösung 1: Verwenden Sie einen automatisch generierten 8.3-Namen, um auf die Datei zuzugreifen

Lösung 2: Benennen Sie einen tiefen Ordner um oder verschieben Sie ihn

Lösung 3: Ordnen Sie ein Laufwerk einem Ordner in der Struktur des Pfads zu. Ordnen Sie ein Laufwerk einem Ordner in der Struktur des Pfads der Zieldatei oder des Zielordners zu. Diese Methode verkürzt den virtuellen Pfad.

Lösung 4: Verwenden Sie eine Netzwerkfreigabe, die so tief wie der Ordner ist. Wenn Lösung 1, 2 und 3 nicht geeignet sind oder das Problem nicht beheben, erstellen Sie eine Netzwerkfreigabe, die so tief wie möglich in der Ordnerstruktur liegt Benennen Sie die Ordner um, indem Sie auf die Freigabe zugreifen.

Lösung 5: Verwenden Sie ein Werkzeug, das tiefe Pfade durchlaufen kann

http://support.microsoft.com/kb/320081

Shawn
quelle
Diese Lösung scheint eine Art von "Auflösung 5: Verwenden Sie ein Werkzeug, das tiefe Pfade durchqueren kann" zu sein
Aaron