2017-10-13 8 views
0

J'essaye d'écrire un fichier batch, qui supprimerait tous les fichiers et répertoires dans le répertoire DELETE, à l'exception de quelques fichiers "importants". J'ai essayé d'ajouter des attributs cachés et système aux fichiers/répertoires importants. Bien qu'il semble fonctionner sur la commande "del", "rmdir" supprime tout, indépendamment des attributs.Fichier batch pour supprimer tous les fichiers dans le répertoire à l'exception des fichiers système

@echo on 

attrib important.txt +s +h 
attrib folder +s +h 
attrib picture.bmp +s +h 
attrib delete.bat +s +h 


del *.* 
rmdir /s /q C:\Users\Lenovo\Desktop\DELETE 

attrib important.txt -s -h 
attrib folder -s -h 
attrib picture.bmp -s -h 
attrib delete.bat -s -h 

pause 

Y at-il un moyen de le faire?

+0

Avez-vous essayé d'ajouter l'attribut *** 'r' *** (lecture seule)? –

+0

Je l'ai essayé maintenant, mais il supprime tout encore – ForteAnother

+0

Veuillez changer le nom de votre fichier '.bat', en lui donnant le nom d'une commande interne,' delete' est potentiellement très problématique. En outre, je suis un peu perplexe quant à la raison pour laquelle vous pensez que changer les attributs de fichier juste à cet effet en vaut la peine. À moins que vous n'ayez une énorme arborescence de répertoires, pourquoi ne pas simplement recopier la liste d'arborescence en supprimant tout sauf les noms de fichiers connus. Vous pouvez le faire en utilisant 'IF' ou probablement mieux' FINDSTR'. – Compo

Répondre

0

Voici une façon de le faire dans PowerShell. Cela peut être placé dans un fichier de script .ps1 et exécuté à partir du shell de commande cmd.exe.

Définissez l'attribut en lecture seule sur les fichiers à ne pas supprimer.

(Get-Item .\important.txt).Attributes+="ReadOnly" 

Utilisez la commande suivante pour supprimer les fichiers. Lorsque vous êtes sûr que les fichiers corrects seront supprimés, supprimez le -WhatIf à la fin de la commande.

Remove-Item -Path * -Recurse -ErrorAction SilentlyContinue -WhatIf