Je crée un script batch et une partie du script essaie de supprimer un répertoire et tous ses sous-répertoires. J'obtiens une erreur intermittente indiquant qu'un sous-répertoire n'est pas vide. J'ai lu un article sur l'indexation en tant que coupable. J'ai désactivé WSearch mais j'ai finalement eu à nouveau l'erreur. Voici la commande:
rmdir /S /Q "C:\<dir>\"
windows
batch-file
Grabuge
la source
la source
Réponses:
J'ai connu les mêmes problèmes que ceux mentionnés par Harry Johnston.
rmdir /s /q
se plaindrait qu'un répertoire n'était pas vide même s'il/s
est destiné à faire le vidage pour vous! Je pense que c'est un bogue dans Windows, personnellement.Ma solution de contournement consiste à
del
tout ce qui se trouve dans le répertoire avant de supprimer le répertoire lui-même:(Le
1>nul
masque la sortie standard dedel
car sinon, il répertorie tous les fichiers qu'il supprime.)la source
mydir
produisaient la même erreur "pas vide". J'ai donc dûcd
entrermydir
et exécuter lesdel
fichiers dans chacun de ces répertoires également. En fin de compte, cela a fonctionné, mais si j'avais dû répéter le processus une troisième fois à un autre sous-niveau, je me serais senti assez vaincu.del /s
fait.rd /s /q mydir
commande.Je connais ce problème. La solution de contournement la plus simple consiste à répéter l'opération sous condition. Je ne l'ai jamais vu échouer deux fois de suite - à moins qu'il n'y ait réellement un fichier ouvert ou un problème d'autorisations, évidemment!
la source
IF EXIST
se cacheAccess is denied
et autres situations. J'ai ajoutéDIR c:\deleteme
quelque chose comme et la vérification des erreurs avant tout.Je viens de rencontrer le même problème et cela avait à voir avec la perte ou la corruption de certains fichiers. Pour corriger le problème, exécutez simplement check disk:
Cela peut être exécuté à partir de la fenêtre de recherche ou à partir d'une invite cmd. Le
/F
corrige tous les problèmes qu'il trouve, comme la récupération des fichiers. Une fois que cela se termine, vous pouvez supprimer les fichiers et les dossiers comme d'habitude.la source
entrez l'invite de commande en tant qu'administrateur et exécutez
la source
J'ai eu un problème similaire, j'ai essayé de supprimer un dossier vide via l'explorateur Windows. M'a montré l'erreur non vide, alors j'ai pensé l'essayer via admin cmd, mais aucune des réponses ici n'a aidé.
Après avoir déplacé un fichier dans le dossier vide. J'ai pu supprimer le dossier non vide
la source
Comme @gfullam l'a déclaré dans un commentaire à la réponse de @ BoffinbraiN, le que
<dir>
vous supprimez lui-même peut ne pas être celui qui contient des fichiers: il peut y avoir des sous-répertoires<dir>
qui reçoivent un message "Le répertoire n'est pas vide" et la seule solution serait alors de itérer récursivement sur les répertoires, en supprimant manuellement tous leurs fichiers contenant ... J'ai fini par décider d'utiliser un port d'rm
UNIX.rm.exe
est livré avec Git Bash, MinGW, Cygwin, GnuWin32 et autres. Il vous suffit d'avoir son répertoire parent dans votre PATH puis de l'exécuter comme vous le feriez dans un système UNIX.Exemple de script batch:
la source
Ce qui a fonctionné pour moi est le suivant. Il semble que la commande RMDir émettra "Le répertoire n'est pas vide" presque tout le temps ...
la source
J'avais "C: \ Users \ User Name \ OneDrive \ Fonts", qui était mklink'ed (/ D) à "C: \ Windows \ Fonts", et j'ai eu le même problème. Dans mon cas
m'a aidé. J'espère que cela vous aide aussi; D
la source
Im mon cas, je viens de déplacer le dossier vers le répertoire racine comme ça.
Et puis a exécuté la commande pour supprimer le répertoire
la source
rmdir c:\<moved directory> /s /q
est la bonne réponseLa raison du
rd /s
refus de supprimer certains fichiers est probablement due aux attributs de fichier READONLY sur les fichiers du répertoire.La bonne façon de résoudre ce problème est de vous assurer que vous réinitialisez d'abord les attributs sur tous les fichiers:
Il peut y en avoir d'autres tels que des fichiers cachés ou système, donc si vous voulez jouer en toute sécurité:
la source
Semblable à la réponse de Harry Johnston, je boucle jusqu'à ce que cela fonctionne.
la source
Windows est parfois "cassé par conception", vous devez donc créer un dossier vide, puis mettre en miroir le "dossier cassé" avec un "dossier vide" en mode sauvegarde.
Créez un répertoire vide comme ceci:
écraser le dossier cassé avec vide comme ceci:
puis supprimez ce dossier
Si cela ne résout pas le problème, essayez de redémarrer en "mode de récupération avec invite de commande" en maintenant la touche Maj enfoncée lorsque vous cliquez sur redémarrer et en essayant d'exécuter à nouveau ces commandes en mode de récupération
la source
/W:0
pour éviter des retards inutiles. Vous ne voudrez peut-être pas,/b
car cela nécessite des privilèges administratifs. Le mode de récupération n'est pas pertinent pour cette question, car nous parlons d'un script batch, pas de quelqu'un essayant manuellement de supprimer un répertoire.Je peux penser aux causes possibles suivantes:
Pour 1.), vous pouvez essayer
runas /user:Administrator
afin d'obtenir des privilèges plus élevés ou démarrer le fichier batch en tant qu'administrateur via le menu contextuel. Si cela n'aide pas, peut-être que même l'administrateur n'a pas les droits. Ensuite, vous devez reprendre la propriété de l'annuaire.Pour 2.) téléchargez Process Explorer , cliquez
Find/Find handle or DLL...
ou appuyez sur Ctrl+F, tapez le nom du répertoire et découvrez qui l'utilise. Fermez l'application qui utilise le répertoire, si possible.la source