2009-12-03 19:23:09 +0000 2009-12-03 19:23:09 +0000
387
387

Hoe verwijder je mappen met pad/namen die te lang zijn voor normaal verwijderen

Windows lijkt een lengtelimiet te hebben op bestandsnamen wanneer je probeert te verwijderen, hoewel het niet verhindert dat die bestanden worden aangemaakt.

Ons bouwproces maakt een aantal tijdelijke bestanden aan (veel gebouwd van een WSDL) die buiten deze limiet om lopen. Ons mierenscript is op de een of andere manier in staat om ze te verwijderen als ik een clean doe, maar soms moet ik de workarea directory (waar alle temp bestanden heen gaan) verwijderen zonder daadwerkelijk een volledige clean van mieren te doen.

Dit zijn dezelfde fouten deze vraag , maar de antwoorden daar werken niet echt voor mij omdat ik te maken heb met een directory, niet een bestand, en ik weet niet altijd welke specifieke bestanden of subdirectories het probleem veroorzaken. En ik probeer een handmatig proces te vermijden (anders dan het activeren van een enkel commando) om ze daadwerkelijk te verwijderen.

Als ik probeer de directory te verwijderen uit Explorer krijg ik de fout Cannot delete [file name]: The file name you specified is not valid or too long. Specify a different file name

Trying Remove-Item in powershell geeft de volgende fout:

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>

Kent iemand een gereedschap of een eenvoudige manier om deze verwijderingsfout te omzeilen zonder de probleembestanden handmatig te moeten vinden en ze te verplaatsen/vernieuwen?

Antwoorden (23)

432
432
432
2009-12-03 19:48:56 +0000

Gebruik de 7-Zip Bestandsbeheer om ze te verwijderen.

Als u nog steeds problemen ondervindt, zorg er dan voor dat u Shift+Delete in het 7-Zip Bestandsbeheer gebruikt. Anders probeert Windows ze te verplaatsen naar de prullenbak (die weer mislukt).

311
311
311
2014-07-04 06:23:55 +0000

Geen van de andere (gratis) antwoorden hier werkte voor mij, maar ik vond er een op een andere site:

rimraf <dir>

rimraf is een Node.js pakket, dus u zult Node.js moeten installeren dat npm bevat. Dan kunt u:

npm install -g rimraf

uitvoeren.

Ik heb deze oplossing gevonden omdat npm zelf dit probleem veroorzaakte door de manier waarop het zich nestelt.

Overigens, rimraf ontleent zijn naam aan het UNIX-commando rimraf, dat recursief bestanden en mappen verwijdert.

155
155
155
2016-03-03 16:45:54 +0000

Er is geen noodzaak om een programma te installeren om dit probleem op te lossen.

Dit probleem is eenvoudig op te lossen met behulp van robocopy, voorgeïnstalleerd sinds de lancering van Windows Vista in 2006.

Bijvoorbeeld, in sommige gevallen is gemeld dat rmdir /S /Q <dir> is mislukt. Het is niet nodig om 7zip of een andere tool van derden te gebruiken. Powershell is een overkill. Cygwin kan werken, maar het is mogelijk dat je het niet geïnstalleerd hebt. Dus, laten we ons concentreren op robocopy

Het idee is om

  1. gebruik robocopy om te kopiëren+bijgewerkte
  2. vanuit een nieuwe lege map
  3. naar de map die je wilt verwijderen, het doel.

Na het uitvoeren van robocopy, zou de doelmap ook leeg zijn.

Deze instructies zijn voor de commandoregel. Open gewoon de zoekopdracht in Windows, typ cmd en druk op Enter.

Laten we zeggen dat de target voor het verwijderen is:

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

We gaan als volgt te werk:

  1. Maak eerst een lege map aan, b.v. C:\emptyfolder.

    1. Kopieer+update van de lege map naar het doel, met behulp van de optie /purge
    1. Verwijder de lege map. Je hebt het niet meer nodig.

Aangezien er geen bestanden of mappen in de bronmap (C:\emptyfolder) zijn, verwijdert het eenvoudigweg recursief de bestanden en mappen onder de doelmap (C:\delete\this folder\with a very long name)!

  • Laatste truc: je kan vermijden om met de hand te schrijven

Zorgvuldig zijn : De verwijderde bestanden ** gaan niet naar de prullenbak** map! Eenmaal verwijderd, kunnen de bestanden niet meer hersteld worden.

(Genomen uit “Pad te lang? Gebruik Robocopy” door BVLANGEN )

PS: Ik realiseer me dat dit antwoord hier was, minder didactisch. Hoe verwijder ik een bestand in Windows met een te lange bestandsnaam? [dupliceren] Benoit toegevoegd:

Het kan zijn dat u dit proces meer dan eens moet doorlopen om alle bestanden te verwijderen.

86
86
86
2009-12-03 19:24:08 +0000

Ik geloof dat ik een manier heb gevonden om dingen uit cmd te verwijderen. Oorspronkelijk probeerde ik het del commando, maar dat werkte niet. Toen herinnerde ik me rmdir. Het volgende doen:

rmdir /S /Q <dir>

lijkt te hebben gewerkt.

30
30
30
2014-11-25 20:22:32 +0000

Het gereedschap dat ik gebruikte toen ik dit probleem had, was FastCopy . Ik heb Delete All geselecteerd uit het uitklapmenu, de map die ik wilde verwijderen en heb Delete All aangeklikt.

FastCopy is portable (geen installatie vereist), en er zijn 32 bit en 64 bit versies beschikbaar.

26
26
26
2014-09-26 19:40:05 +0000

Cygwin’s rm -rf werkt goed op lange paden!

26
26
26
2014-10-28 06:09:34 +0000

Zonder extra software te installeren kunt u met subst het commando C:\Very long directory\that exceed\length limit\blah blah blah\abcde\folder to be deleted gebruiken om tijdelijk een alias aan te maken naar een map met een lange naam.

bijvoorbeeld. Als u de map X:\folder to be deleted wilt verwijderen kunt u het commando

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

gebruiken en dan kunt u &007 eenvoudig verwijderen in Windows Verkenner of in commando prompt. Om de tijdelijke stationsletter alias te verwijderen gebruikt u het commando

subst x: /d
22
22
22
2011-04-22 16:00:01 +0000

Ga gewoon van Powershell naar het commando door naar beneden te rennen:

Cmd /C "rmdir /S /Q <dir>"
18
18
18
2015-06-25 14:19:53 +0000

Dentrasi’s oplossing ](https://superuser.com/a/78458/10407) is wat voor mij het beste werkte, maar ik wilde de specifieke stappen in een antwoord op het hoogste niveau plaatsen.

  1. 1. Download en installeer de laatste stabiele constructie van 7zip .
  2. 2. Voer de 7zip File Manager uit ( 7zfm.exe ).
  3. Download en installeer de laatste stabiele bouw van [ 7zip ]&003.
  4. Voer de 7zip File Manager uit ( 7zfm.exe ). 3. Navigeer in het 7zip Bestandsbeheer zodat u de naam van de map die u wilt verwijderen kunt zien (d.w.z. u bevindt zich in de bovenliggende map).
  5. Houd de knop Shift ingedrukt.
  6. Klik op de knop “Delete”, hetzij op uw toetsenbord of in de werkbalk van 7zip Bestandsbeheer; waarborg dat u de Shift-toets nog steeds ingedrukt houdt.
  7. 6. Klik op de knop “OK”; waarborg dat u de Shift-toets nog steeds ingedrukt houdt.
12
12
12
2016-09-09 10:52:17 +0000

Er zijn twee dingen die nog niet in de bestaande antwoorden zijn vermeld.

  1. Je kunt het voorvoegsel voor lange paden gebruiken om toegang te krijgen tot
  2. 2. Met Windows 10 kun je ondersteuning voor lange paden inschakelen voor algemeen gebruik - merk echter op dat niet alle applicaties met lange paden zullen werken, je moet oudere software testen. Alleen software met een geschikte manifeste vermelding kan hier gebruik van maken.

Long Path Prefix

De Windows API heeft een speciale functie die Unicode-padnamen tot 32k karakters lang ondersteunt (elk element kan tot 255 karakters lang zijn).

Dit wordt vaak ten onrechte aangeduid als UNC naamgeving, maar het is niet gerelateerd.

De prefix die wordt gebruikt om de API te vertellen lange Unicode paden te gebruiken is `\?Er zijn twee dingen die nog niet in de bestaande antwoorden zijn vermeld.

  1. Je kunt het voorvoegsel voor lange paden gebruiken om toegang te krijgen tot
  2. 2. Met Windows 10 kun je ondersteuning voor lange paden inschakelen voor algemeen gebruik - merk echter op dat niet alle applicaties met lange paden zullen werken, je moet oudere software testen. Alleen software met een geschikte manifeste vermelding kan hier gebruik van maken.

Long Path Prefix

De Windows API heeft een speciale functie die Unicode-padnamen tot 32k karakters lang ondersteunt (elk element kan tot 255 karakters lang zijn).

Dit wordt vaak ten onrechte aangeduid als UNC naamgeving, maar het is niet gerelateerd.

De prefix die wordt gebruikt om de API te vertellen lange Unicode paden te gebruiken is zoals in:

\?\D:\very long path

UNC namen worden normaal gesproken gebruikt bij het verwijzen naar paden op servers op afstand in het formulier \servername\path name\file name. Je kunt dit combineren met de lange pad prefix dus: \?\UNC\server\share

Merk op dat sommige, slecht geschreven maar helaas vrij veel voorkomende, applicaties geen UNC-bestandspaden of de lange pad prefix ondersteunen.

Referentie: https://msdn.microsoft.com/en-gb/library/windows/desktop/aa365247(v=vs.85).aspx#maxpath ](https://msdn.microsoft.com/en-gb/library/windows/desktop/aa365247(v=vs.85).aspx#maxpath)

Lange pad ondersteuning

Dit is een optie die is toegevoegd aan recente versies van Windows 10. Deze optie is op het moment van schrijven niet standaard geactiveerd, omdat er specifieke applicatie-ondersteuning voor nodig is. Interessant is dat PowerShell ondersteuning heeft ingebouwd zodat het inschakelen van deze optie het mogelijk maakt om lange paden direct te gebruiken in PowerShell-scripts.

U kunt het activeren via de Groepsbeleid-editor als u een versie van Windows heeft met dat. Of u kunt gewoon de volgende registerwijziging gebruiken. Zoals altijd, maak een back-up van het gedeelte van het register dat je aan het veranderen bent voordat je iets doet.

  1. Start regedit.exe.
  2. Bevestig de UAC prompt.
  3. 4. Navigeer naar de sleutel: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\{48981759-12F2-42A6-A048-028B3973495F}Machine\System\CurrentControlSet\Policies
  4. Maak of verander de sleutel LongPathsEnabled.
  5. Als deze niet bestaat, klik dan met de rechtermuisknop op Policies en selecteer Nieuw > Dword (32-bits) Waarde in het menu.
  6. Stel LongPathsEnabled in op 1 om in te schakelen.

Elke toepassing met de juiste manifeste gegevens heeft nu toegang tot POSIX standaard lange paden. Dit moet Windows Store apps bevatten.

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

UPDATE 2017-04-09

@maoizm wees op een probleem met de bovenstaande registratiesleutel, dus ik heb wat meer gegraveerd . Het lijkt erop dat u nu ondersteuning voor lange bestandsnamen kunt instellen met een systeemsleutel:

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

Dit werkt nog steeds alleen voor toepassingen die specifiek zijn ingesteld om het te gebruiken (vereist een vermelding in het manifest.xml van de toepassing).

U moet er ook rekening mee houden dat u geen relatieve padnamen kunt gebruiken met deze methode.

8
8
8
2014-10-28 05:52:15 +0000

Ik hou van de cmd-oplossing. Hoewel ik een andere workaround wil delen die zelfs werkt in gewoon Explorer: probeer de namen van de bovenliggende mappen in te korten voordat je ze verwijdert: kortere namen zullen het pad verkorten. Zeg, je hebt deze boomstructuur van de map:

C:\

… Projecten

… … Een of ander geweldig project in het voorjaar van 2014

… … Wat Activiteit in het park in de stad een vrijdag

… … … Bla bla bla bla bla bla bla

… … … Actuele bestanden met lange namen, ook

In dit geval kun je de mappen niet verwijderen, je kunt de bestanden ook niet verwijderen of hernoemen. Als je de hele mapstructuur of een deel ervan wilt verwijderen, kun je de bovenliggende mappen tijdelijk hernoemen en het pad inkorten, en vervolgens de map verwijderen. De namen kunnen gewoon letters zijn:

C:\

… Projecten

… x

… y

… … z

… … … Werkelijke bestanden met lange namen, ook

In mijn geval wilde ik gewoon de hele map met veel submappen en bestanden verwijderen. Dus de namen van de mappen konden me niet schelen.

7
7
7
2016-01-11 14:22:54 +0000

De 7-rits oplossing werkt geweldig. Een andere optie als je git hebt geïnstalleerd is om een bash-shell te openen en te gebruiken:

rm -f

(of rm -rf voor mappen)

4
4
4
2014-04-29 15:47:23 +0000

Ik stel voor Total Commander (shareware, maar blijft werken na de proefperiode met slechts een minimaal zeurderstartscherm). Zo los ik altijd de te lange bestandsnaam problemen op.

2
2
2
2015-02-08 21:07:55 +0000

Ik heb een eenvoudig java-programma gemaakt dat robocopy gebruikt om de bestanden te verwijderen. De pot is een runnable. Voor extra uitvoer, voer het uit vanaf de cmd lijn. https://drive.google.com/file/d/0B5pSEjxJvt_1WVp1T3puSm1CNjg/view? usp=deling

2
2
2
2010-11-06 16:24:27 +0000

U kunt ze ook verwijderen met behulp van hun equivalente korte naam. dir /x zal u ze laten zien.

1
1
1
2013-12-20 06:10:00 +0000

Ik heb alle andere antwoorden geprobeerd, maar ze werkten niet (tenminste niet voor mij).

Ik kwam delinfile tegen en werkte vrij goed en vrij snel!

Het proces is beperkt tot 3 acties / 15 Dagen maar het is bruikbaar als je alleen een paar mappen/bestanden wilt verwijderen:

1
1
1
2017-10-28 00:35:26 +0000

Hier heb je het perfecte antwoord (voor bestanden). Werkt 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

Zie ook: https://msdn.microsoft.com/en-us/library/aa365247.aspx#maxpath ](https://msdn.microsoft.com/en-us/library/aa365247.aspx#maxpath)

Geen enkel alternatief antwoord in 4 vragen was voldoende voor mijn behoeften. Je bent van harte welkom in de wereld.

1
1
1
2017-01-09 12:08:22 +0000

Ook voor deze taak is Grotere mappen ontworpen.

  • Download
  • Gebruikt een recursieve oproep met RemoveDirectoryW om bestaande mappen te verwijderen - Gebruikt eigen bestandsopslag voor nieuw aangemaakte mappen
  • Bestanden kunnen uit de mappen worden verplaatst voordat ze worden verwijderd.
  • Snel, hoewel het navigeren naar de top van de map een klik is per geneste map
  • Windows XP(SP3) en omhoog
  • Ongesigneerde onbeheerde code zonder installatieprogramma, dus mogelijke Smartscreen-waarschuwing wanneer deze wordt uitgevoerd vanaf een reservemap, bijvoorbeeld het bureaublad.

Meer info bij CodeProject .

1
1
1
2017-06-13 07:52:13 +0000

Ik werd geconfronteerd met dit probleem in Windows 10 en vond deze gemakkelijke oplossing.

  1. 1. Ga naar iets dieper in je mapstructuur.
  2. 2. Sleep een map van ergens in het midden van de boom naar ergens waar de boom begint met behulp van de adresbalk.
  3. 3. Net als in mijn afbeelding, sleep het rode vak naar het groene vak. (in dit geval is het pad korter, maar voor lange paden werkt het ook)
  4. 4. Dan wordt je pad korter en verwijder je zoals gewoonlijk met de delete toets.

0
0
0
2015-06-25 16:47:36 +0000

Ik ben er eindelijk achter gekomen hoe ik dit kan doen via Powershell. Hier zijn de instructies die ik heb gevolgd om dit op Windows 7 te laten werken:

  1. Maak een nieuwe map genaamd NTFSSecurity in de map C:Users\XXXXDocuments\WindowsPowerShellModules\NTFSSecurity, waar XXXX je Windows gebruikersnaam is. Voorbeeld: als mijn gebruikersnaam “aspnyc” was, dan zou de nieuwe map _C:\\DocumentenWindowsPowerShellModulesNTFSSecurity_ .

    1. Download het File System Security PowerShell Module-pakket - het zou beschikbaar moeten zijn als een eenvoudig ZIP-bestand.
    1. Open een Powershell-console, voer Get-Module -ListAvailable uit en zorg ervoor dat NTFSSecurity ergens in de lijst met geregistreerde modules verschijnt.
  2. Voer in de Powershell-console Import-Module NTFSSecurity uit.

  3. Voer in de Powershell console Remove-Item2 “YYYYY” -Recurse uit, waar YYYY het Windows pad is naar de map die je recursief wilt verwijderen (b.v. C:\Potatoes\Badgers\FolderToDelete ).

0
0
0
2015-10-09 16:08:22 +0000

Ik kwam er uiteindelijk achter hoe ik dit moest doen met Powershell op Windows 10 waar de individuele bestandsnamen te lang waren. Hier zijn de stappen die ik heb gevolgd om dit op Windows 10 te laten werken:

  1. Download het File System Security PowerShell Module pakket - het zou beschikbaar moeten zijn als een eenvoudig ZIP-bestand.
  2. 2. Pak het Zip-bestand uit als een map NTFSSecurity in de map C:\WINDOWSsystem32\WindowsPowerShell®v1.0®Modules.
  3. 3. Open een Powershell console met de administratieve verhoging (a.k.a. Admin Mode) en draai Get-Module -ListAvailable en zorg ervoor dat NTFSSecurity ergens in de lijst van geregistreerde modules verschijnt.
  4. 4. Voer Set-ExecutionPolicy Unrestricted uit om de ondertekende uitvoeringsmodus te omzeilen. Je moet deze actie bevestigen met een Y(es)
  5. Uiteindelijk cd naar de map die je wilt verwijderen.
  6. Voer in de Powershell console Import-Module NTFSSecurity in.
  7. 7. In de Powershell console, voer Remove-Item2 “YYYYY” -Recurse uit, waarbij YYYYY het relatieve of absolute Windows pad is naar de map die je recursief wilt verwijderen (b.v. C:\Potatoes\BadgersFolderToDelete ).
  8. Controleer of het werkte.
  9. 9. Zet uiteindelijk terug naar de ondertekende uitvoeringsmodus met Set-ExecutionPolicy Restricted. Je moet deze actie bevestigen met Y(es).
0
0
0
2019-07-16 21:25:40 +0000

Navigeer naar de map in WinRAR, selecteer het bestand, druk op F2, hernoem het bestand naar een kortere naam. Daarna kunt u het bestand zoals gebruikelijk verwijderen.

Source: https://www.youtube.com/watch?v=qQTyTprFAOg ](https://www.youtube.com/watch?v=qQTyTprFAOg)

0
0
0
2017-07-05 10:44:55 +0000

Als je Bash op Ubuntu op Windows hebt geïnstalleerd, kun je de cd in een gewone commandoprompt in de bovenliggende map zetten en dan typen:

bash -c "rm -rf dirname_here"

Die bash start, verwijdert recursief de map van linux waar geen bestandsnaambeperkingen zijn, en gaat dan terug naar de gewone commandoprompt.