Ik maak een batch-script en een deel van het script probeert een map en al zijn submappen te verwijderen. Ik krijg een intermitterende fout over een submap die niet leeg is. Ik lees een artikel over indexering als de schuldige. Ik heb Wsearch uitgeschakeld, maar ik kreeg uiteindelijk weer de fout. Dit is de opdracht:
rmdir /S /Q "C:\<dir>\"
Antwoord 1, Autoriteit 100%
Ik heb dezelfde problemen ervaren als Harry Johnston heeft genoemd. rmdir /s /q
zou klagen dat een map niet leeg was, hoewel /s
is bedoeld om het legen voor u te doen! Ik denk dat het persoonlijk een bug in Windows is.
Mijn oplossing is op del
alles in de map voordat u de map zelf verwijdert:
del /f /s /q mydir 1>nul
rmdir /s /q mydir
(De 1>nul
Verbergt de standaarduitgang van del
omdat anders het enkele bestand vermeldt dat het wordt verwijderd.)
Antwoord 2, Autoriteit 49%
Ik ben bekend met dit probleem. De eenvoudigste oplossing is om de bewerking voorwaardelijk te herhalen. Ik heb het nog nooit twee keer op een rij gefaald – tenzij er eigenlijk een open bestand is of een probleem met de machtigingen, uiteraard!
rd /s /q c:\deleteme
if exist c:\deleteme rd /s /q c:\deleteme
Antwoord 3, Autoriteit 23%
Ik heb net hetzelfde probleem aangemeld en het had te maken met sommige bestanden die worden verloren of beschadigd. Om het probleem te verhelpen, voert u cheque-schijf uit:
chkdsk /F e:
Dit kan worden uitgevoerd vanuit het vak Zoeken Windows of vanaf een CMD-prompt. De /F
Fixeert eventuele problemen die het vindt, zoals het herstellen van de bestanden. Zodra dit is voltooid, kunt u de bestanden en mappen zoals normaal verwijderen.
Antwoord 4, autoriteit 18%
voer de opdrachtprompt in als beheerder en voer het uit
rmdir /s <FOLDER>
Antwoord 5, autoriteit 7%
Ik had een soortgelijk probleem, ik probeerde een lege map te verwijderen via Windows Verkenner. Liet me de niet-lege fout zien, dus ik dacht dat ik het via admin cmd probeerde, maar geen van de antwoorden hier hielp.
Nadat ik een bestand naar de lege map heb verplaatst. Ik heb de niet-lege map kunnen verwijderen
Antwoord 6, autoriteit 3%
Zoals @gfullam aangaf in een reactie op het antwoord van @BoffinbraiN, is de <dir>
die u zelf verwijdert misschien niet degene die bestanden bevat: er kunnen submappen zijn in <dir>
die het bericht “De map is niet leeg” krijgen en de enige oplossing zou dan zijn om recursief de mappen te doorlopen, waarbij alle bestanden die erin staan handmatig worden verwijderd… Ik heb uiteindelijk besloten om een poort van rm
van UNIX. rm.exe
wordt geleverd met Git Bash, MinGW, Cygwin, GnuWin32 en andere. U hoeft alleen de bovenliggende map in uw PATH te hebben en vervolgens uit te voeren zoals u zou doen in een UNIX-systeem.
Batchscript voorbeeld:
set PATH=C:\cygwin64\bin;%PATH%
rm -rf "C:\<dir>"
Antwoord 7, autoriteit 3%
Ik had “C:\Users\User Name\OneDrive\Fonts”, dat was gelinkt ( /D ) naar “C:\Windows\Fonts”, en ik kreeg hetzelfde probleem. In mijn geval
cd “C:\Gebruikers\Gebruikersnaam\OneDrive”
rd /s-lettertypen
Y (om de actie te bevestigen)
heeft me geholpen. Ik hoop dat het jou ook helpt ;D
Antwoord 8, autoriteit 2%
In mijn geval heb ik de map zo naar de hoofdmap verplaatst.
move <source directory> c:\
En voerde toen de opdracht uit om de map te verwijderen
rmdir c:\<moved directory> /s /q
Antwoord 9, autoriteit 2%
Wat voor mij werkte, is het volgende. Het lijkt alsof het RMDir-commando bijna altijd “De map is niet leeg” geeft…
:Cleanup_Temporary_Files_and_Folders
Erase /F /S /Q C:\MyDir
RMDir /S /Q C:\MyDir
If Exist C:\MyDir GoTo Cleanup_Temporary_Files_and_Folders
Antwoord 10
De reden waarom rd /s
weigert bepaalde bestanden te verwijderen, is hoogstwaarschijnlijk te wijten aan ALLEEN-LEESEN bestandskenmerken op bestanden in de map.
De juiste manier om dit op te lossen, is ervoor te zorgen dat u eerst de kenmerken van alle bestanden opnieuw instelt:
attrib -r %directory% /s /d
rd /s %directory%
Er kunnen andere zijn, zoals verborgen of systeembestanden, dus als je op veilig wilt spelen:
attrib -h -r -s %directory% /s /d
rd /s %directory%
Antwoord 11
Vergelijkbaar met het antwoord van Harry Johnston, loop ik door totdat het werkt.
set dirPath=C:\temp\mytest
:removedir
if exist "%dirPath%" (
rd /s /q "%dirPath%"
goto removedir
)
Antwoord 12
Ik kan de volgende mogelijke oorzaken bedenken:
- er zijn bestanden of submappen die hogere rechten nodig hebben
- er zijn bestanden in gebruik, niet alleen door WSearch, maar misschien ook door uw virusscanner of iets anders
Voor 1.) kunt u runas /user:Administrator
proberen om hogere privileges te krijgen of het batchbestand starten als beheerder via het contextmenu. Als dat niet helpt, heeft misschien zelfs de beheerder niet de rechten. Dan moet u het eigendom van de directory overnemen.
Voor 2.) download Procesverkenner, klik op Find/Find handle or DLL...
of druk op Ctrl+F, typ de naam van de directory en zoek uit wie deze gebruikt. Sluit indien mogelijk de applicatie die de directory gebruikt.
Antwoord 13
Windows is soms “gebroken door ontwerp”, dus u moet een lege map maken en vervolgens de “gebroken map” spiegelen met een “lege map” met back-upmodus.
robocopy - cmd copy utility
/copyall - copies everything
/mir deletes item if there is no such item in source a.k.a mirrors source with
destination
/b works around premissions shenanigans
Maak een lege map als volgt aan:
mkdir empty
overschrijf de kapotte map met leeg als volgt:
robocopy /copyall /mir /b empty broken
en verwijder vervolgens die map
rd broken /s
rd empty /s
Als dit niet helpt, probeer dan opnieuw op te starten in “herstelmodus met opdrachtprompt” door shift ingedrukt te houden wanneer u op opnieuw opstarten klikt en probeer deze opdracht opnieuw uit te voeren in herstelmodus