Je dois supprimer un dossier contenant d'autres dossiers et fichiers à l'intérieur. J'ai essayé del
et des rmdir
commandes mais parfois elles échouent avec quelques lignes d'erreur:[PATH]: The directory isn't empty.
Y a-t-il une bonne alternative?
windows
command-line
Francesco Zanini
la source
la source
Réponses:
Cela m’arrive beaucoup avec mes scripts de construction automatisés.
Je suppose que la raison pourrait être une application qui a un fichier ouvert dans ce répertoire avec "share delete". C'est-à-dire que l'application permet une suppression du fichier (c'est pourquoi je suppose que l'appel DeleteFile n'échoue pas), mais le fichier ne disparaîtra qu'après que ladite application aura fermé son handle.
Cela signifie que le fichier peut toujours être présent lorsque la
rmdir
commande tente de supprimer le dossier, d'où le message d'erreur. Peu de temps après, ladite application fermera son handle, le fichier disparaîtra et lorsque vous inspecterez le dossier pour voir quel fichier enrmdir
parlait, il sera vide.Au moins c'est ma théorie.
La solution de contournement proposée par Harry Johnston semble bonne. Seulement je voudrais insérer une pause entre les
rmdir
commandes. Bien entendu, Windows ne dispose pas de commande "pause" facilement scriptable (correction: les anciennes versions de Windows ne le sont pas, les plus récentes ont - voir les commentaires). Mais si la granularité en secondes est suffisante, on peut utiliserping
pour créer une pause:Donc au total:
la source
rm -rf /directory/
devrait être global sur tous les systèmes d'exploitation.timeout /t 3
pause
commande).Essayer:
ou:
ignorer les messages de confirmation.
la source
del
etrmdir
ne demande rien, ils envoient simplement des lignes comme celle de la description.rmdir /s
supprimera tout ce qu'il est possible de supprimer. Vous pouvez avoir des fichiers verrouillés par un programme, des fichiers en lecture seule ou des fichiers dont vous avez besoin d'un accès administratif à supprimer. Il n'y a pas une seule commande qui s'occupe de toutes ces situations pour vousVous pouvez avoir des fichiers en lecture seule, vous pouvez utiliser l’option del / F pour vous en débarrasser en utilisant
Vous pouvez également avoir des fichiers cachés et si vous êtes vraiment sûr de vouloir les supprimer, vous pouvez le faire en utilisant
Si le problème persiste, vous n'êtes pas autorisé à supprimer certains fichiers ou certains fichiers sont toujours en cours d'utilisation.
la source
Je pense qu'il y a un bogue dans Windows 7 (et peut-être dans d'autres versions) qui provoque parfois ce symptôme; ou cela pourrait être un bogue dans un logiciel tiers. (Symantec Endpoint Protection est-il installé par hasard?)
Quoi qu'il en soit, je l'ai rencontré assez souvent. Dans la plupart des cas, le problème peut être résolu en s'exécutant
rd /s /q
deux ou trois fois de suite.Si cela se trouve dans un fichier de commandes, vous pouvez faire quelque chose comme ceci:
la source
Utilisez
del
sur les fichiers à l'intérieur, puisrmdir
pour supprimer le dossier.Pour que la
rmdir
méthode supprime également tous les fichiers, utilisez le/S
commutateur situé avant le nom du répertoire et/Q
supprimez l'invite de suppression. C’est la meilleure façon de le faire, car vous ne manquez aucun fichier. Soyez prudent en utilisant le commutateur / Q, car il ne vous avertira pas des attributs de fichier système ou cachés.la source
Si vous utilisez node, vous pouvez utiliser la dépendance rimraf comme ceci:
lancer l'installation:
npm install rimraf -g
supprimer le dossier:
rimraf SourceFolder
Cela m'a aidé à obtenir l'erreur:
la source
Dossier anciennes versions de Windows (DOS, Windows 95/98 / ME),
DELTREE
est équivalent àRM
ouRMDIR
. J'utilise bienDELTREE
sur mon poste de travail Windows 7 en fichiers de commandes.la source
Je pense que vous pouvez l'utiliser comme ceci:
la source