Forum Clubic

Fichier BATCH pour supprimer des fichiers par noms incrémentés

Bonjour,

J’utilise un programme qui, quand je l’utilise, me créée divers types de fichiers pour sauvegarder les modifications réalisées, les notes, les commentaires, …

Une fois par mois, je souhaiterais faire un grand nettoyage de certains de mes dossiers (avec arborescence) afin de supprimer tous ces fichiers créées. Je ne souhaite pas toucher à l’arborescence des dossiers, mais uniquement à leur contenu (fichiers).

Je souhaiterais donc faire un fichier batch qui me permette de faire ce grand nettoyage. Le problème est que ces fichiers n’ont pas d’extension, donc je ne peux pas les supprimer de cette manière, et leur nom n’est pas « constant », ils commencent toujours par ANXPOT, puis un numéro est accolé en fonction du numéro de fichier généré : ANXPOT1, ANXPOT2, … et dans certains cas, cela peut aller jusqu’à plusieurs milliers(ANXPOT7849).

Ajouter une ligne pour supprimer chaque numéro de ce type n’est pas efficient et il y a toujours un risque qu’un jour ce numéro de fichier soit dépassé par les fichiers, et qu’ils ne soient donc pas supprimés:
echo o|del /s ANXPOT1

J’ai aussi pensé à faire une boucle for/while mais on reste confronté à cette même limitation.

Je souhaiterais savoir si vous auriez une idée, s’il existe une manière de faire pour obtenir le même résultat que lors de recherches google, en mettant un « * » après la base pour qu’ils prenne toutes les déclinaisons possible après.

Je vous remercie,
Bonne journée,

Paul.

Bonjour,

Quelque chose comme ceci?

image

Sinon tu peux te tourner du côté de PowerShell : il y a de fortes chances qu’il soit installé par défaut, et il est plus puissant (et mieux) que cmd.exe.

Merci, je vais essayer, probablement en changeant un peu la ligne de commande pour éviter qu’absolument tous les fichiers soient supprimés, mais c’est super, merci.

PowerShell est vraiment super, mais quand tu veux faire un truc automatique, rapide, et répétitif, c’est vraiment embêtant vu que tu ne peux pas faire un batch où tu dois juste double cliquer pour que le travail soit fait.

Avec powershell tu as les fichiers de scripts .PS1 et avec un raccourci windows cela peut se lancer d’un double clic

Voir un raccourci windows contenant la cible
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command « &{ Get-ChildItem -Path D:\test -Include . -Exclude ..txt,*.dll -Recurse | Remove-Item} »

(lire plutot sans les modif du forum qui cassent complétement la commande:

j’ai des fichiers eula.1040.txt dans mon répertoire de test, d’où les étoile.étoile.txt, c’est évidement à adapter)
La commande qui cherche les fichiers, avec des include (recherche tous les fichiers) et exclude (exclus les .txt et .dll) pour faciliter le boulot :
Get-ChildItem -Path D:\test -Include . -Exclude ..txt,*.dll -Recurse
En //, supprimes tout ce qui est trouvé avec :
| Remove-Item

En s’appuyant sur cette commande Get-ChildItem avec un fichier script test.PS1 contenant


(pas mis en texte car rendu incompréhensible par le forum):

Lancé via un raccourci avec cible
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -File d:\test.ps1

j’obtiens


Un y supprimes les fichiers listés en bas

Description de Get-ChildItem : PowerShell: Get-ChildItem

Faire le raccourci powershell? : bouton droit la ou on veut le raccourci, choisir nouveau puis raccourci, renseigner juste powershell
image
Puis faire bouton droit sur le nouveau raccourci et propriétés pour changer la cible
image

Merci pour ces précisions, est-il possible de récupérer l’emplacement du raccourcis dans les fichiers, pour que lors du clic dessus, ces opérations s’opèrent dans le fichier où est placé le raccourcis ?