So löschen Sie Verzeichnisse, deren Pfad / Name für das normale Löschen zu lang ist


380

Windows scheint beim Versuch, Dateien zu löschen, eine Längenbeschränkung für Dateinamen zu haben, die jedoch nicht die Erstellung dieser Dateien verhindert.

Unser Erstellungsprozess erstellt eine Reihe von temporären Dateien (von denen viele aus einer WSDL erstellt wurden), die diese Grenze überschreiten. Unser Ameisenskript ist irgendwie in der Lage, sie zu löschen, wenn eine Bereinigung durchgeführt wird, aber manchmal muss ich das Arbeitsbereichsverzeichnis (in das alle temporären Dateien verschoben werden) löschen, ohne tatsächlich eine vollständige Bereinigung von der Ameise durchzuführen.

Dies sind die gleichen Fehler wie bei dieser Frage , aber die Antworten dort funktionieren bei mir nicht wirklich, da es sich um ein Verzeichnis handelt, nicht um eine Datei, und ich weiß nicht immer, welche bestimmten Dateien oder Unterverzeichnisse das Problem verursachen. Und ich versuche, jeden manuellen Vorgang (außer das Auslösen eines einzelnen Befehls) zu vermeiden, um sie tatsächlich zu löschen.

Wenn ich versuche, das Verzeichnis aus dem Explorer zu löschen, erhalte ich die Fehlermeldung

Cannot delete [file name]: The file name you specified is not valid or too long.  
Specify a different file name

Der Versuch , Remove-Itemin Powershell gibt die folgenden Fehler:

Remove-Item : The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
At line:1 char:12
+ Remove-Item  <<<< -force -Recurse <directory>

Kennt jemand Tools oder einfache Möglichkeiten, um diesen Löschfehler zu umgehen, ohne die problematischen Dateien manuell finden und verschieben / umbenennen zu müssen?


2
Ich habe die Lösung kurz vor dem Posten dieser Frage gefunden, aber da andere möglicherweise darauf stoßen, habe ich mich dazu entschlossen, sie zu posten, damit sie die Lösung finden, auf die ich gestoßen bin.
Herms

Oh, ich weiß, aber wenn ich solche Dinge tue, lasse ich die Frage für eine Weile "unbeantwortet", um zu sehen, ob jemand anderes eine bessere Lösung hat.
Herms

Durch Far die einfachste Lösung: youtube.com/watch?v=qQTyTprFAOg
TaW

Mit Ubuntuoder Linux Bootable CDmit Ubuntueinem anderen Betriebssystem können wir unseren Computer vorübergehend auf einem anderen Betriebssystem booten . Dann können wir den Ordner auswählen und ihn einfach löschen.
Kelum Priyadarshane

1
Diese ältere Frage hat einige interessante Antworten zu: superuser.com/questions/45697/...
AdamV

Antworten:


421

Verwenden Sie den 7-Zip- Dateimanager, um sie zu löschen.

Wenn Sie weiterhin Probleme haben, stellen Sie sicher, dass Sie Shift+ Deleteim 7-Zip-Dateimanager verwenden. Andernfalls versucht Windows, sie in den Papierkorb zu verschieben (was erneut fehlschlägt).


5
Danke - dies hat einen dir-Baum entfernt, der ein bisschen rekursiv wurde und zu tief war, als dass del / rmdir / rm / explorer entfernt werden konnte
Martin Beckett

63
funktioniert hervorragend mit Shift + Entf - 7zip konnte keine Dateien mit langen Pfaden in den Papierkorb verschieben ....
cori

66
+1 7zip. Sie müssen zu dem Ordner navigieren und DANN verwenden, shift + Delwie @cori sagte. Wenn Sie die DeleteOption aus dem Kontextmenü auswählen , schlägt sie dort fehl. shift + Deles!
Urda

8
7zip funktionierte nicht für Win7 64, Linux auch nicht.
Erik Friesen

13
Ich stimme dem zu, weil Sie mit 7zip auch einen Ordner löschen können, der lange verschachtelte Ordner enthält. Ich hatte ein Problem mit einem node_module-Ordner, der eine Menge verschachtelter Ordner enthielt, und konnte ihn nicht entfernen. 7zip aus dem Basisordner fehlerfrei behoben. +1
Gruber

310

Keine der anderen (kostenlosen) Antworten hier hat für mich funktioniert, aber ich habe eine auf einer anderen Seite gefunden:

rimraf <dir>

rimraf ist ein Node.js- Paket, daher müssen Sie Node.js installieren, das npm enthält . Dann kannst du laufen:

npm install -g rimraf

Dann können Sie rimrafvon der Befehlszeile ausführen .

Ich habe diese Lösung gefunden, weil npm selbst dieses Problem verursacht hat, weil es Abhängigkeiten verschachtelt.

rimrafErhält seinen Namen übrigens vom UNIX-Befehl rm -rf, der rekursiv Dateien und Ordner löscht.


7
Versuchte viele Möglichkeiten. Das funktioniert einfach perfekt!
Duckegg

2
Die beste Antwort von allen :) Ja, es ist einfach
Al-Mothafar

2
Dies sollte die akzeptierte Antwort sein.
NINCOMPOOP

13
Ihre Lösung funktioniert, aber das ist so schnell, dass ich ein Knoten-js-Modul zum Löschen von Knoten-js-Modul-Ordnern verwenden muss ... Ich möchte nicht mehr auf diesem Planeten leben
Benoit P

4
Node hat das Problem in erster Linie für mich so ... interessant ... gemacht, dass sie auch eine Lösung haben.
Eric J.

141

Es ist nicht erforderlich, ein Programm zu installieren, um dieses Problem zu beheben.

Dieses Problem lässt sich mit robocopyWindows Vista, das 2006 gestartet wurde, leicht beheben .

Beispielsweise rmdir /S /Q <dir>wurde berichtet, dass in einigen Fällen fehlgeschlagen ist. Es ist nicht erforderlich, 7zip oder ein anderes Tool von Drittanbietern zu verwenden. Powershell ist ein Overkill. Cygwin funktioniert möglicherweise, ist jedoch möglicherweise nicht installiert. Konzentrieren wir uns also aufrobocopy

Die Idee ist zu

  1. Verwenden Sie robocopyzum Kopieren + aktualisiert
  2. aus einem neuen leeren Ordner
  3. zu dem Ordner, den Sie löschen möchten, das Ziel.

Nach der Ausführung wäre robocopyauch das Zielverzeichnis leer.

Diese Anweisungen gelten für die Befehlszeile. Öffnen Sie einfach die Suche in Windows, geben Sie ein cmdund drücken Sie die Eingabetaste.

Angenommen, das Ziel für das Löschen ist:

C:\delete\this folder\with a very long name

Wir gehen wie folgt vor:

  1. Erstellen Sie zunächst ein leeres Verzeichnis, z C:\emptyfolder.

    mkdir C:\emptyfolder
    
  2. Kopieren + Aktualisieren aus dem leeren Verzeichnis in das Ziel mit der Option /purge

    robocopy c:\emptyfolder "C:\delete\this folder\with a very long name" /purge
    
  3. Löschen Sie das leere Verzeichnis. Du brauchst es nicht mehr.

    rmdir c:\emptyfolder
    

Da sich im Quellverzeichnis ( C:\emptyfolder) keine Dateien oder Ordner befinden, werden die Dateien und Ordner im Zielverzeichnis ( C:\delete\this folder\with a very long name) einfach rekursiv gelöscht!

  • Letzter Trick: Sie können das Schreiben von Hand vermeiden

    C:\delete\this folder\with a very long name
    

    Durch Ziehen des Ordners aus einem Explorer-Fenster und Ablegen im Terminal / cmd-Fenster.

Achtung : Die gelöschten Dateien werden nicht in den Papierkorb verschoben! Einmal gelöschte Dateien können nicht wiederhergestellt werden.

(Aus "Path too long? Use Robocopy" von BVLANGEN )

PS: Mir ist klar, dass diese Antwort weniger didaktisch war. Wie lösche ich eine Datei in Windows mit einem zu langen Dateinamen? [Duplikat]

Benoit fügte hinzu:

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


11
Vielen Dank, mein Herr! Dies sollte die akzeptierte Antwort sein, da alle anderen entweder nicht funktionierten oder ein Drittanbieter-Tool benötigten . :)
MickyD

Das funktioniert einwandfrei ... es muss (soweit ich weiß) nichts installiert werden und es geht schnell. Dies sollte die akzeptierte Antwort sein!
ksumarine

1
Dadurch wird ein Teil (oder der gesamte) Verzeichnisbaum unter "c: \ deletefolder" (Zielverzeichnis) beibehalten. Wie auch immer, löschte alles in einem Augenblick für mich (ich schätze, die Dateien waren klein) und ich musste nur manuell <Entf> "c: \ deletefolder", die untergeordneten Verzeichnisse wurden ohne ein Problem entfernt. Lief wie am Schnürchen. +1, sollte die akzeptierte Antwort sein! :)
rld.

@rld, aber gab es vorher "deletefolder"? Ansonsten denke ich, sollte es leer sein, wenn es ein neues Verzeichnis war. Ansonsten ist es ein Durcheinander. Ich könnte einen letzten Schritt für "rmdir deletefolder" hinzufügen.
hectorpal

1
Bei sehr rekursiven Verzeichnissen ist diese Option viel langsamer als 7zip. Nachdem ich 20 Minuten gewartet hatte, führte ich ein Benchmarking durch und stellte fest, dass 7zip ausgeführt wurde.
Andy Gauge

84

Ich glaube, ich habe einen Weg gefunden, Dinge aus zu löschen cmd. Ursprünglich habe ich den delBefehl ausprobiert , aber das hat nicht funktioniert. Dann erinnerte ich mich rmdir. Folgendes tun:

rmdir /S /Q <dir>

scheint funktioniert zu haben.


105
Hat bei mir nicht funktioniert. :(
Andrew Arnott

Denken Sie daran, in cmd abzulegen, bevor Sie versuchen, rmdir auszuführen.
Brianpeiris

8
Für diejenigen, die diese Lösung nicht verwenden können, habe ich eine alternative Lösung, die für mich funktioniert hat (mit zu langen Pfad- / Dateinamen): Verschieben Sie die Datei (en) / das Verzeichnis nach C: \, um den Pfad zu verkürzen, und löschen Sie sie von dort.
Anders Sandberg Nordbø

6
Es ist möglich, dass Verzeichnisse vorhanden sind, für die diese Lösung nicht funktioniert und die 7-Zip löschen kann. Mir ist das gerade passiert.
SamStephens

2
Diese Lösung erzielt inkonsistente Ergebnisse. Bitte stimmen Sie nicht ab.
Hectorpal

29

Das Tool, mit dem ich dieses Problem hatte, war FastCopy . Ich habe in der Dropdown-Liste Alle löschen ausgewählt, das zu löschende Verzeichnis ausgewählt und auf Alle löschen geklickt .

Screenshot des FastCopy-Löschdialogs

FastCopy ist portabel (keine Installation erforderlich) und es sind 32-Bit- und 64-Bit-Versionen verfügbar.


3
Wenn Sie nach einem Befehlszeilentool suchen, können Sie ein kleines Tool verwenden, das ich auf GitHub veröffentlicht habe ( github.com/epsitec/Tools-RecursiveDelete ).
Pierre Arnaud

Ich hatte einen rekursiv generierten Satz verschachtelter Dateien / Ordner. Dies war die einzige funktionierende Lösung
Pierluigi

2
Dies funktionierte für mich, als das Kommandozeilen-Zeug fehlschlug und der 7zip-Versuch fehlschlug. und sogar der Microsoft-Support war ratlos!
Kit Ramos

Das selbe hier - ich habe angefangen, Dateien mit 7zip zu löschen, aber es hat sich auch sehr seltsam ausgewirkt und ich musste jedes Verzeichnis mehrmals hintereinander verschieben + löschen, um es tatsächlich zu löschen, aber dann habe ich dieses Tool ausprobiert und es funktioniert wie ein Zauber . Es wurde zweimal gestartet, um alle Dateien zu entfernen. Vielen Dank!
Artanis

Danke, auch für mich die einzige funktionierende Lösung, GROSSARTIG !!!!
Tim

26

Ohne Installation zusätzlicher Software können Sie mithilfe des substBefehls einen Alias ​​für ein Verzeichnis mit langem Namen temporär erstellen.

Wenn Sie z. B. einen Ordner löschen möchten, C:\Very long directory\that exceed\length limit\blah blah blah\abcde\folder to be deletedkönnen Sie den Befehl verwenden

subst x: "C:\Very long directory\that exceed\length limit\blah blah blah\abcde"

und dann können Sie X:\folder to be deletedin Windows Explorer oder in der Eingabeaufforderung leicht löschen . Verwenden Sie den Befehl, um den Alias ​​für den temporären Laufwerksbuchstaben zu entfernen

subst x: /d

Ich habe alle anderen Antworten ausprobiert (einschließlich Antworten von anderen ähnlichen Fragen) und dies war die einzige, die für mich funktioniert hat. Und es war bei weitem das schnellste.
Glenneroo

1
Dies ist bei weitem die beste Antwort: einfache, integrierte Funktionen, kein Durcheinander mit der Registrierung. Sollte die akzeptierte Antwort sein.
Kevin Roche

Einfach die sauberste und direkteste Methode, danke Kenneth.
Seth

Diese Antwort macht mir Angst, weil ich tatsächlich ein X: -Laufwerk habe. Es gibt hier nicht genügend Informationen und ich empfehle nicht, dass die Leute dies ohne weitere Erklärung befolgen.
Qodeninja

25

Cygwin rm -rffunktioniert gut auf langen Wegen!


3
Cygwin hat perfekt für mich gearbeitet! Habe gerade ein -rm -rf und alle Dateien wurden gelöscht.
Ranhiru Jude Cooray

3
Funktionierte auch für mich unter GNU bash, Version 4.1.10 (4) -release
rjzii

2
Funktionierte hervorragend, wenn von einem Git Bash-Befehlsfenster ausgeführt wurde. Ich hatte GitGui dafür installiert.

22

Gehen Sie einfach von Powershell aus wie folgt vor:

Cmd /C "rmdir /S /Q <dir>" 

3
"Das Verzeichnis ist nicht leer". Hoppla. Das OP möchte einen nicht leeren Ordner löschen.
Leye0

Wie unterscheidet sich das von der Antwort von @herms?
Bigbadmouse

18

Die Lösung von Dentrasi hat für mich am besten funktioniert, aber ich wollte die einzelnen Schritte in einer Antwort auf höchster Ebene veröffentlichen.

  1. Laden Sie die neueste stabile Version von 7zip herunter und installieren Sie sie .
  2. Führen Sie den 7zip-Dateimanager ( 7zfm.exe ) aus.
  3. Navigieren Sie im 7zip-Datei-Manager, damit Sie den Namen des Ordners sehen können, den Sie löschen möchten (dh Sie befinden sich im übergeordneten Ordner).
  4. Halten Sie die Umschalttaste gedrückt.
  5. Klicken Sie entweder auf der Tastatur oder in der Symbolleiste des 7zip-Dateimanagers auf die Schaltfläche " Löschen ". Stellen Sie sicher, dass Sie die Umschalttaste weiterhin gedrückt halten .
  6. Klicken Sie auf die Schaltfläche " OK ". Stellen Sie sicher, dass Sie die Umschalttaste weiterhin gedrückt halten .

Netter Versuch, aber bei mir hat es immer noch nicht geklappt mit 10.000 rekursiven Ordnern. Nur Rimraf arbeitete.
Julian Knight

@JulianKnight: Ja, dieser Ansatz hat auch bei mir nicht zu 100% aufgehört. Ich wollte es nur erwähnen, weil es zu den einfacheren Prozessen gehörte und zumindest zeitweise funktionierte. Das einzige, was ich festgestellt habe, dass dies in 100% der Fälle funktioniert hat, ist der Powershell + NTFSSecurity-Modulskriptansatz, den ich unten beschrieben habe. IIRC rimraf scheiterte, als ich angerufen wurde. So bin ich überhaupt in dieses Chaos geraten. Weitere Informationen finden Sie in diesem Node.js-Thread: github.com/nodejs/node-v0.x-archive/issues/…
Mass Dot Net

Ja, es wird immer solche Probleme geben. Tatsächlich war es der Bibliotheksinstallationscode der Arduino IDE, in dem ich (Java) ausgeführt habe. Ich habe versehentlich den Ordner mit den Bibliotheken als Ordner zum Installieren einer Bibliothek ausgewählt und los ging's! Ich habe den Prozess abgebrochen, sobald mir klar wurde, dass ich bereits 10.000 Ordner hatte (verdammt i7 / SSD!). Die nächste Hauptversion von NPM soll dazu beitragen, viele der tiefgreifenden Probleme bei der Bibliotheksinstallation für Node zu lösen, da Abhängigkeiten erfüllt werden müssen eine viel flachere Struktur. Trotzdem bin ich wirklich froh, dass mich jemand auf rimraf gesetzt hat - einfach und kostenlos.
Julian Knight

@JulianKnight - Ja, vor ein oder zwei Tagen hat mir jemand gesagt, dass npm3 helfen soll, diese Probleme zu lösen, indem tief verschachtelte Abhängigkeitsordnerstrukturen vermieden werden.
Mass Dot Net

Ich weiß nicht, ob es verhindert, aber verschachtelte Abhängigkeiten werden sinnvoller behandelt, sodass die Bibliothek der obersten Ebene verwendet wird, wenn Ihre Hauptanwendung Bibliothek X v1.0 und Bibliothek Y Z erfordert, für die auch X v1.0 erforderlich ist. Derzeit würde Z eine eigene Version von X installieren.
Julian Knight

11

In den vorhandenen Antworten werden zwei Dinge nicht bereits erwähnt.

  1. Sie können ein erweitertes Pfadpräfix verwenden, um auf lange Pfade zuzugreifen
  2. Unter Windows 10 können Sie die Unterstützung für lange Pfade für den allgemeinen Gebrauch aktivieren. Beachten Sie jedoch, dass nicht alle Anwendungen mit langen Pfaden funktionieren. Sie sollten ältere Software testen. Dies kann nur von Software mit einem entsprechenden Manifest-Eintrag genutzt werden.

Präfix für langen Pfad

Die Windows-API verfügt über eine spezielle Funktion, die Unicode-Pfadnamen mit einer Länge von bis zu 32 KB unterstützt (jedes Element kann bis zu 255 Zeichen lang sein).

Dies wird oft fälschlicherweise als UNC-Benennung bezeichnet, ist aber nicht verwandt.

Das Präfix, mit dem die API angewiesen wird, lange Unicode-Pfade zu verwenden, lautet \\?\wie folgt :

\\?\D:\very long path

UNC-Namen werden normalerweise verwendet, wenn auf Pfade auf Remoteservern im Formular verwiesen wird \\servername\path name\file name. Sie können dies mit dem Präfix für lange Pfade kombinieren, um Folgendes zu erreichen:\\?\UNC\server\share

Beachten Sie, dass einige, schlecht geschriebene, aber leider weit verbreitete Anwendungen weder UNC-Dateipfade noch das Präfix für lange Pfade unterstützen.

Referenz: https://msdn.microsoft.com/de-de/library/windows/desktop/aa365247(v=vs.85).aspx#maxpath

Unterstützung für lange Wege

Dies ist eine Option, die neueren Versionen von Windows 10 hinzugefügt wurde. Sie ist zum Zeitpunkt des Schreibens nicht standardmäßig aktiviert, da eine spezielle Anwendungsunterstützung erforderlich ist. Interessanterweise verfügt PowerShell über eine integrierte Unterstützung, sodass durch Aktivieren dieser Option lange Pfade direkt in PowerShell-Skripten verwendet werden können.

Sie können es über den Gruppenrichtlinien-Editor aktivieren, wenn Sie über eine Windows-Version verfügen. Oder Sie können einfach die folgende Registrierungsänderung verwenden. Sichern Sie wie immer den Bereich der Registrierung, den Sie ändern, bevor Sie etwas tun.

  1. Rennen regedit.exe.
  2. Bestätigen Sie die UAC-Eingabeaufforderung.
  3. Navigieren Sie zu der Taste: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\{48981759-12F2-42A6-A048-028B3973495F}Machine\System\CurrentControlSet\Policies
  4. Erstellen oder ändern Sie den Schlüssel LongPathsEnabled.
  5. Wenn dies nicht der Fall ist, klicken Sie mit der rechten Maustaste auf Richtlinien und wählen Sie im Menü die Option Neu> Dword-Wert (32-Bit).
  6. Set LongPathsEnabledzu 1aktivieren.

Alle Anwendungen mit entsprechenden Manifest-Einträgen haben jetzt Zugriff auf lange POSIX-Standardpfade. Dies sollte Windows Store-Apps einschließen.

Referenz: https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-on-windows-10/

UPDATE 2017-04-09

@maoizm wies über ein Problem mit dem Registrierungsschlüssel, so habe ich einige mehr zu graben . Sie können nun die Unterstützung für lange Dateinamen mit einem Systemschlüssel festlegen:

HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (Type: REG_DWORD)

Dies funktioniert jedoch nur für Anwendungen, die speziell für die Verwendung eingestellt sind (erfordert einen Eintrag in der Datei manifest.xml der Anwendung).

Sie sollten auch beachten, dass Sie mit dieser Methode keine relativen Pfadnamen verwenden können.


{48981759-12F2-42A6-A048-028B3973495F}MachineEin Teil des Registrierungspfads ist auf jedem Computer anders - es ist möglicherweise nicht für jeden offensichtlich
maoizm

1
@ maoizm - guter Punkt, danke, dass du das hervorgehoben hast. In meinem Update finden Sie eine Alternative, wenn Sie das W10-Jubiläumsupdate oder höher verwenden.
Julian Knight

Ich schreibe eine Bibliothek namens FoundationIO und versuche, den langen Pfad als Standard festzulegen. Kann ich eine Funktion oder ein Makro aufrufen, um die Unterstützung für lange Pfade für jeden Benutzer meiner Bibliothek automatisch zu aktivieren?
MarcusJ

Hallo Marcus, ist das eine native Windows-Bibliothek? In diesem Fall verfügt .NET über die erforderliche Unterstützung, die bereits im Rahmen der entsprechenden Windows-API vorhanden ist. Tut mir leid, dass ich die Details nicht kenne, da ich kein .NET- oder Win-API-Programmierer bin. Die Details sollten jedoch in MSDN durchsuchbar sein.
Julian Knight

8

Ich mag die cmd-Lösung. Obwohl ich eine andere Problemumgehung teilen möchte, die sogar nur im Explorer funktioniert: Versuchen Sie, die Namen der übergeordneten Ordner vor dem Löschen zu verkürzen: Kürzere Namen verkürzen den Pfad. Angenommen, Sie haben diese Baumstruktur des Ordners:

C: \

.. Projekte

.. .. Ein tolles Projekt im Frühjahr 2014

.. .. .. Eine Aktivität im Park in der Stadt am Freitag

.. .. .. .. Bla bla bla bla bla bla bla bla bla bla

.. .. .. .. .. Auch aktuelle Dateien mit langen Namen

In diesem Fall können Sie die Ordner nicht löschen, Sie können die Dateien auch nicht löschen oder umbenennen. Wenn Sie die gesamte Ordnerstruktur oder einen Teil davon entfernen möchten, können Sie die übergeordneten Ordner vorübergehend umbenennen, den Pfad verkürzen und dann den Ordner entfernen. Die Namen können nur Buchstaben sein:

C: \

.. Projekte

.. .. X

.. .. .. y

.. .. .. .. z

.. .. .. .. .. Auch aktuelle Dateien mit langen Namen

In meinem Fall wollte ich nur den gesamten Ordner mit vielen Unterordnern und Dateien entfernen. Die Namen der Ordner waren mir also egal.


1
Ich habe ein kleines Tool geschrieben, das genau das macht und es auf GitHub veröffentlicht. github.com/epsitec/Tools-RecursiveDelete
Pierre Arnaud

1
Alle Befehle oder Umschalt + Entf funktionieren bei mir nicht, aber das tut es.
Larkee

Funktioniert nicht wirklich, wenn Sie
Julian Knight

funktioniert auch nicht, wenn einer der Ordner einen sehr langen Namen hat (Sie können den fehlerhaften Ordner nicht umbenennen).
Aucuparia

7

Die 7-Zip-Lösung funktioniert hervorragend. Eine andere Möglichkeit, wenn Sie git installiert haben, besteht darin, eine Bash-Shell zu öffnen und Folgendes zu verwenden:

rm -f

(oder rm -rffür Ordner)


1
Für die Uneingeweihten erklären Sie bitte, wie Sie "eine Bash-Shell öffnen" in Windows?
OMY

1
@OMY Sie müssen Git installiert haben. Anschließend können Sie über das Startmenü git bash öffnen. Wenn Sie sich bei der Installation von git für die Shell-Erweiterung entschieden haben, können Sie mit der rechten Maustaste in oder auf einen Ordner klicken undGit Bash Here
User

4

Ich schlage Total Commander vor (Shareware, arbeitet aber nach der Testphase mit nur einem minimalen Nag-Startbildschirm weiter). Auf diese Weise löse ich immer die Probleme mit zu langen Dateinamen .


1
Dem Herrn sei Dank, dass ich das gefunden habe. Probleme beim Löschen eines node_modules-Ordners, da dieser beschließt, die Verzeichnisse dumm zu verschachteln.
Alias

Nun, @Alias, Total Commander macht dieses Problem zumindest für mich leichter zu erkennen. Nach der Identifizierung eines solchen Problems chkdsksollte es gelöst werden.
Sopalajo de Arrierez

Version 7.0 funktioniert nicht, es wird eine Fehlermeldung angezeigt und empfohlen, als Administrator zu arbeiten, was ebenfalls fehlschlägt.
Izogfif

@izogfif: Die aktuellste Version ist 8.52a. Ich würde es versuchen. Sie geben keine Details zu Ihrer Fehlermeldung an, aber es kann zu Inkonsistenzen in der Archivstruktur kommen, die (zumindest für NTFS) mit "chkdsk c: / f" (unter der Annahme von Laufwerk C :) behoben werden müssen.
Sopalajo de Arrierez

2

Sie können sie auch mit ihrem entsprechenden Kurznamen löschen. dir /xwerde es dir zeigen.


2

Ich habe ein einfaches Java-Programm erstellt, das Robocopy zum Löschen der Dateien verwendet. Das Glas ist ein lauffähiges. Für zusätzliche Ausgabe führen Sie es aus der cmd-Zeile aus.

https://drive.google.com/file/d/0B5pSEjxJvt_1WVp1T3puSm1CNjg/view?usp=sharing


2
Und wenn Sie kein Java verwenden möchten, können Sie dieses Tool verwenden, das ich mit .NET geschrieben habe ( github.com/epsitec/Tools-RecursiveDelete ).
Pierre Arnaud

@ PierreArnaud großer Nutzen. Ich brauchte so etwas für die Befehlszeilenautomatisierung. @Camhart gute arbeit von dir auch! Danke Leute!
Mittwoch,

1

Ich habe alle anderen Antworten ausprobiert, aber sie haben nicht funktioniert (zumindest für mich).

Ich bin auf delinfile gestoßen und habe recht gut und ziemlich schnell gearbeitet!

Die Testversion ist auf 3 Aktionen / 15 Tage beschränkt, kann jedoch verwendet werden, wenn Sie nur einige Ordner / Dateien löschen möchten:


1

Bigger Directories ist auch für diese Aufgabe ausgelegt. Bildbeschreibung hier eingeben

  • Herunterladen
  • Verwendet einen rekursiven Aufruf mit RemoveDirectoryW, um vorhandene Verzeichnisse zu löschen
  • Verwendet ein eigenes Datei-Repository für neu erstellte Verzeichnisse
  • Dateien können aus den Verzeichnissen verschoben werden, bevor die darin enthaltenen Verzeichnisse gelöscht werden.
  • Schnell, obwohl das Navigieren zum oberen Ende des Verzeichnisses ein Klick pro verschachteltem Verzeichnis ist
  • Windows XP (SP3) und höher
  • Unsignierter, nicht verwalteter Code ohne Installationsprogramm, daher mögliche Smartscreen-Warnung, wenn er aus einem Ersatzordner (z. B. Desktop) ausgeführt wird.

Mehr Infos unter CodeProject .


Bitte lesen Sie Wie empfehle ich Software für einige Tipps, wie Sie Software empfehlen sollten. Sie sollten mindestens einen Link, einige zusätzliche Informationen zur Software selbst und Informationen zur Behebung des Problems in der Frage bereitstellen.
DavidPostill

@ David: Besser? Link war sehr nützlich, danke.
Laurie Stearn

1

Ich hatte dieses Problem in Windows 10 und fand diese einfache Lösung.

  1. Gehen Sie etwas tiefer in Ihren Ordnerbaum hinein.
  2. Ziehen Sie einen Ordner mithilfe der Adressleiste von einer beliebigen Stelle in der Mitte des Baums an einen beliebigen Ort am Anfang des Baums.
  3. Wie in meinem Bild ziehen Sie das rote Kästchen in das grüne Kästchen und legen es dort ab. (In diesem Fall ist der Pfad kürzer, aber bei langen Pfaden funktioniert er auch.)
  4. Dann wird Ihr Weg kürzer und löschen Sie wie gewohnt mit der Entf-Taste.

Bildbeschreibung hier eingeben


1

Habe hier die perfekte Antwort (für Dateien). Funktioniert in Windows 10.

REM Make sure there is no \ at the end of either path!
robocopy "C:\...\...\...\long\path" "C:\DeleteMe" "FileName" /MOV
REM Note: this ^ can be called many times before...:

REM Finally, recursively delete the higher up DeleteMe directory.
rmdir /S /Q DeleteMe

Siehe auch: https://msdn.microsoft.com/en-us/library/aa365247.aspx#maxpath

Keine einzige alternative Antwort in 4 Fragen reichte für meine Bedürfnisse aus. Gern geschehen, Welt.


0

Ich habe endlich herausgefunden, wie das mit Powershell geht. Hier sind die Anweisungen, die ich befolgt habe, damit dies unter Windows 7 funktioniert:

  1. Erstellen Sie einen neuen Ordner mit dem Namen NTFSSecurity im Ordner C: \ Users \ XXXX \ Documents \ WindowsPowerShell \ Modules \ NTFSSecurity , wobei XXXX Ihr Windows-Benutzername ist. Beispiel: Wenn mein Benutzername " aspnyc " lautet , lautet der neue Ordner " C: \ Users \ aspnyc \ Documents \ WindowsPowerShell \ Modules \ NTFSSecurity" .

  2. Laden Sie das PowerShell-Modulpaket für Dateisystemsicherheit herunter. Es sollte als einfache ZIP-Datei verfügbar sein.

  3. Öffnen Sie eine Powershell-Konsole, führen Sie Get-Module -ListAvailable aus und stellen Sie sicher, dass NTFSSecurity in der Liste der registrierten Module angezeigt wird.
  4. Führen Sie in der Powershell-Konsole das Import-Module NTFSSecurity aus .
  5. In der Konsole Powershell Remove-Element2 „YYYY“ -Recurse , wo YYYY der Windows - Pfad zu dem Ordner ist Sie wollen rekursiv löschen (zB C: \ Kartoffeln \ Badgers \ FolderToDelete ).

0

Endlich habe ich herausgefunden, wie das mit Powershell unter Windows 10 geht, wo die einzelnen Dateinamen zu lang waren. Hier sind die Schritte, die ich ausgeführt habe, damit dies unter Windows 10 funktioniert:

  1. Laden Sie das PowerShell-Modulpaket für Dateisystemsicherheit herunter. Es sollte als einfache ZIP-Datei verfügbar sein.
  2. Extrahieren Sie die Zip-Datei als Ordner NTFSSecurity im Verzeichnis C: \ WINDOWS \ system32 \ WindowsPowerShell \ v1.0 \ Modules.
  3. Öffnen Sie eine Powershell-Konsole mit der Administratorberechtigung (auch als Administratormodus bezeichnet), führen Sie Get-Module -ListAvailable aus und stellen Sie sicher, dass NTFSSecurity irgendwo in der Liste der registrierten Module angezeigt wird.
  4. Führen Sie Set-ExecutionPolicy Unrestricted aus , um den signierten Ausführungsmodus zu umgehen. Sie müssen diese Aktion mit einem Y (es) bestätigen
  5. Wechseln Sie schließlich zu dem Ordner, den Sie löschen möchten.
  6. Führen Sie in der Powershell-Konsole das Import-Module NTFSSecurity aus .
  7. In der Powershell - Konsole laufen Remove-Element2 "YYYY" -Recurse , wo YYYY die relative oder absolute Windows - Pfad zu dem Ordner , den Sie rekursiv wollen , ist löschen (zB C: \ Kartoffeln \ Badgers \ FolderToDelete ).
  8. Überprüfen Sie, ob es funktioniert hat.
  9. Setzen Sie mit Set-ExecutionPolicy Restricted den signierten Ausführungsmodus zurück . Sie müssen diese Aktion mit Y (es) bestätigen.

0

Wenn Sie Bash unter Ubuntu unter Windows installiert haben, können Sie in einer regulären Eingabeaufforderung in das übergeordnete Verzeichnis wechseln und dann Folgendes eingeben:

bash -c "rm -rf dirname_here"

Womit bash gestartet wird, wird das Verzeichnis unter Linux rekursiv gelöscht, wobei es keine Dateinamenbeschränkungen gibt, und anschließend wird die reguläre Eingabeaufforderung beendet.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.