“rm -rf” équivalent pour Windows?
J'ai besoin d'un moyen de supprimer de manière récursive un dossier et de ses enfants.
Est-il un prédéfini pour cela l'outil, ou dois-je besoin d'en écrire un?
DEL /S
ne pas supprimer des répertoires.
DELTREE
été supprimés à partir de Windows 2000+
- N'del /s (a) de ne pas travailler du tout (il est uniquement disponible dans certaines versions) ou (b) laisser le répertoire de niveau supérieur, mais tout supprimer d'application, ou c) un congé de tous les répertoires lors de la suppression de tous les fichiers?
- la réponse c, vous devez utiliser rmdir /s pour supprimer des répertoires et des fichiers.
- N'est-il pas vraiment
format c:
alors l'installation de Linux? Je plaisante bien sûr.
Vous devez vous connecter pour publier un commentaire.
RMDIR ou RD si vous utilisez le classique Invite de Commande (cmd.exe):
Si vous êtes à l'aide de PowerShell, vous pouvez utiliser
Remove-Item
(qui est un alias dedel
,erase
,rd
,ri
,rm
etrmdir
) et prend un-Recurse
argument qui peut être court-circuité à la-r
rmdir /s /q foo\*
donne une erreur de syntaxe incorrecte.rd /s /q foo && echo "yay"
échouera si le répertoire "toto" n'existe pas.Access is denied
et d'autresThe process cannot access the file because it is being used by another process
?if exist myfolder ( rmdir /s/q myfolder )
si vous ne savez pas si le dossier n'existe pas ou pashelp rmdir
dans windows 7 indique/S
doit être utilisé pour supprimer l'ensemble de l'arborescence des répertoires et/Q
doit être utilisé pour le mode silencieux.admin:
Fonctionne pour n'importe quoi y compris sys fichiers
EDIT: en fait j'ai trouvé la meilleure façon qui résout également les fichier chemin d'accès trop long problème ainsi:
robocopy /mir c:\empty .
takeown
m'a aidé comme je l'ai copié le dossier à partir d'un système Linux avec rsync par erreur et je n'avais pas de privilèges pour supprimer ce dossier... même Pas le robocopy travaillé. MerciRMDIR [/S] [/Q] [drive:]path
RD [/S] [/Q] [drive:]path
/S
Supprime tous les répertoires et les fichiers dans le répertoire spécifié en plus du répertoire lui-même. Utilisé pour supprimer une arborescence de répertoires./Q
Mode silencieux, ne demandez pas si ok pour supprimer une arborescence avec/S
Vous pouvez installer cygwin, qui a
rm
ainsi quels
etc.Aller le chemin d'accès et le déclencheur de cette commande.
/s : Supprime le répertoire spécifié et tous les sous-répertoires y compris tous les fichiers. Utilisation /s pour supprimer un arbre.
/q : Exécute rmdir en mode silencieux. Supprime des répertoires sans confirmation.
/? : Affiche l'aide à l'invite de commande.
Pour la suppression d'un répertoire (s'il existe ou pas) utiliser les éléments suivants:
rmdir /S /Q %DIRNAME%
rmdir /s dirname
Essayer cette commande:
Tout d'abord, passons en revue ce que
rm -rf
n':Il y a trois scénarios où
rm -rf
est couramment utilisé là où il est attendu pour revenir0
:Je vais ignorer l'ensemble des autorisations de chose, mais personne ne l'utilise à des autorisations ou tente de se priver d'un accès en écriture sur les choses à Windows de toute façon (OK, c'est censé être une blague...).
Première réglez l'option
ERRORLEVEL
à 0 et ensuite supprimer le chemin d'accès seulement si il existe, à l'aide des commandes différentes en fonction de si oui ou non c'est un répertoire.IF EXIST
ne permet pas de définirERRORLEVEL
à 0 si le chemin n'existe pas, de sorte que le réglage de laERRORLEVEL
à 0 d'abord est nécessaire de détecter correctement le succès d'une manière qui imite la normalerm -rf
d'utilisation. Garder leRD
avecIF EXIST
est nécessaire parce queRD
, contrairement àrm -f
, provoquera une erreur si la cible n'existe pas.L'extrait de script suivant suppose que DELPATH est prequoted. (C'est sûr, quand vous faites quelque chose comme
SET DELPATH=%1
. Essayez de mettreECHO %1
dans un.cmd
et passant un argument avec des espaces, et de voir ce qui se passe pour toi). Après l'extrait est terminée, vous pouvez vérifier l'échec avecIF ERRORLEVEL 1
.Point est, tout est plus simple quand l'environnement est conforme à POSIX. Ou si vous installez un minimum de MSYS et l'utiliser.
Accepté la réponse est génial, mais en supposant que vous avez Nœud installé, vous pouvez le faire avec beaucoup plus de précision avec le nœud de la bibliothèque "rimraf", qui permet l'expansion de modèles. Si vous utilisez beaucoup (ce que je fais), il suffit de l'installer à l'échelle mondiale.
alors, par exemple, un modèle que j'utilise en permanence:
ou pour un one-liner qui vous permettra d'esquiver l'installation globale, mais qui prend un peu plus longtemps pour le package dynamique de téléchargement:
Voici ce que vous devez faire...
Créer un fichier de commandes avec la ligne suivante
RMDIR /S %1
Enregistrer votre fichier de commandes comme
Remove.bat
et le mettre dansC:\windows
Créer la clé de registre suivante
HKEY_CLASSES_ROOT\Directory\shell\Remove Directory (RMDIR)
Lancement
regedit
et de mettre à jour la valeur par défautHKEY_CLASSES_ROOT\Directory\shell\Remove Directory (RMDIR)\default
avec la valeur suivante
"c:\windows\REMOVE.bat" "%1"
C'est tout! Maintenant, vous pouvez cliquer-droit sur le répertoire et utiliser la fonction RMDIR
À L'Aide De Powershell 5.1
Remplacer journaux avec le nom du répertoire que vous souhaitez supprimer.
get-childitem recherches pour les enfants répertoire avec le nom de manière récursive à partir de l'actuel chemin (.).
remove-item supprime le résultat.
via Powershell
via l'Invite de Commande
https://stackoverflow.com/a/35731786/439130
Vous pouvez installer GnuWin32 et d'utilisation *nix commandes en mode natif sur windows. J'ai installer ce avant de m'installer quoi que ce soit d'autre sur un menthe fraîche copie de windows. 🙂
UTILISER À VOS PROPRES RISQUES. INFORMATIONS FOURNIES EN L'ÉTAT. PAS TESTÉ EN PROFONDEUR.
Cliquez-droit sur icône Windows (généralement en bas à gauche) > cliquez sur "Windows PowerShell (Admin)" > utilisation de cette commande (avec le plus de soin, vous pouvez facilement supprimer tous vos fichiers si vous ne faites pas attention):
Où
somedir
est le répertoire non vide, vous souhaitez supprimer.Noter que les externes disques connectés, ou des disques avec des questions, des Fenêtres, parfois, se comporte de façon étrange, il n'a pas d'erreur dans le supprimer (ou une copie de la tentative), mais le répertoire n'est pas supprimé (ou pas copié), comme indiqué. (J'ai trouvé que dans ce cas, au moins pour moi, l'ordre donné par @n_y dans sa réponse sera de produire des erreurs comme " get-childitem : le fichier ou Le répertoire est endommagé et illisible.' la suite dans PowerShell)
voici ce qui a fonctionné pour moi:
Juste essayez de diminuer la longueur du chemin d'accès.
j'.e :: Renommer tous les dossiers de ce genre d'un fichier de plus petite possible les noms. Dire une lettre de noms. Aller sur le renommage vers le haut dans la hiérarchie des dossiers.
Par ce u efficacement réduire la longueur du chemin.
Maintenant, enfin, essayez de supprimer le fichier tout de suite.
Il est également deltree si vous êtes sur une version antérieure de windows.
J'aime vraiment ce site pour trouver des commandes:
SS64: Del - Supprimer les Fichiers
del /s /q directorytobedeleted