[WINDOWS] Planifier un nettoyage de dossier

Hello les GZ,

Petite question qui va sans doute paraitre “noobesque” à la plupart d’entre-vous, mais comme je n’ai pas envie de me louper, je préfère demander.

J’ai sur mon PC un dossier qui sert de stockage provisoire pour mes logiciels audio (astucieusement baptisé “temp”) et dans lequel sont stockés des fichiers temporaires (notamment les .reapeaks de Reaper). Ces fichiers ont tendance à prendre de la place au bout d’un certain temps et vu qu’ils sont reconstruits à la volée au besoin, je me dis qu’un petit nettoyage complet du dossier tous les mois est sans doute une bonne solution.

Seulement voilà, j’ai lancé le Task Sheduler et si je pige parfaitement les settings de périodicité, j’ai un peu de mal à savoir quelle commande lui filer pour qu’il fasse ça de manière autonome. Faut-il que je prépare un .bat ? Un script ? Si oui, que dois-je y mettre ?

Pour info, le chemin du dossier est le suivant : D:\Studio\Temp. Idéalement, je voudrais donc que tout ce qui s’y trouve (sous-folder compris) soit nettoyé à une fréquence définie par le TS.

Merci d’avance !

la commande à executer:

cmd /c del /f /s /q D:\Studio\Temp\*.*

Je propose: rd D:\Studio\Temp /s /q

Si tu veux virer totalement le contenu:
dans un .bat:

rd /s /q D:\Studio\Temp
md D:\Studio\Temp
 
Par contre le défaut de cette technique: si un fichier bloque il ne fera rien, donc meme pas un début de ménage

donc:

del /f /s /q D:\Studio\Temp\*.*
rd /s /q D:\Studio\Temp
md D:\Studio\Temp
 
Au moins tu auras un début de ménage

un ptit coup de

D:
cd D:\Studio\Temp
del /S /F /Q *

dans un .bat devrait suffire

Le .* apres la premiere * dans le script de nusul sert a rien (voir meme pourrait empecher de del)

[quote=“AnA-l, post:5, topic: 55864”][/quote]

C’est dangereux: Si le cd D:\Studio\Temp ne s’éxécute par correctement, le del /S /F * s’executera ailleurs que prévu. Avec les conséquence qu’on peut imaginer (oups, apu rien sur D:)

Bon ben manifestement, ma question n’était pas si « noobesque » que ça. :smiley:

Mettez-vous d’accord, les gars. :stuck_out_tongue:

[quote=« AnA-l, post:5, topic: 55864 »][/quote]

oh mon dieu l’erreur de noob :slight_smile:
Donc le D: n’est pas accessible à se moment là et tu efface le %userfprofile%
GG!!!

Reste au code plz :slight_smile:

[quote=“nusul, post:8, topic: 55864”][/quote]

Ou, plus simplement, le repertoire \Temp\ est déjà supprimé de D:\Studio  tu effaces tout D:

Mais c’est intéressant car ça donne un exemple typique pour:
<@Faskil> un bon del . récursif
C’est un peu dangereux ça
<@Faskil> bah pourquoi ?
Parceque s’il ne s’execute pas où tu crois, tu peux faire du dégat
<@Faskil> nan mais on va faire un truc simple : partir du principe que je sais ce que je fais avec ce folder
ouais, c est vrai, les bonnes pratiques, c est que pour ceux qui savent pas ce qu ils font

Mon dieu, zwzsg. On dirait un toutou qui veut pas lâcher son bout de bois. :smiley:

Les gens dotés d’un minimum d’intelligence auront bien entendu compris qu’il est sous-entendu que je veux le faire de manière à ce qu’il n’y ait pas de maldonne possible. Mais parfois, j’oublie un peu vite à qui je m’adresse.

Donc je la refais, avec les précisions d’usage pour ceux qui ont du mal :

1° je veux pouvoir faire une suppression récursive (dossiers et fichiers) dans D:\Studio\Temp via le Task Scheduler.
2° le processus suggéré doit impliquer une gestion minimale de la sécurité pour éviter de faire n’importe quoi (donc par exemple, faire en sorte que le del se fasse dans le bon répertoire, au hasard, ou vérifier qu’il existe). DUH.

Bon et avec tout ça, j’ai toujours pas de réponse à ma question. ^^

[quote=“Faskil, post:10, topic: 55864”][/quote]

Sous-entendu je suis con? Et après tu demande pouquoi je whine.

[quote=“Faskil, post:10, topic: 55864”][/quote]

La deuxième réponse de Nusul me parait très bien.

[quote=“zwzsg, post:11, topic: 55864”][/quote]

Oh, tu whinais déjà bien avant ça (et sinon, le “sous-entendu” était en réalité du sarcasme, le vrai sous-entendu, c’était de penser que je sois assez débile que pour vouloir faire du del . dans un folder sans un minimum de garanties :P).

[quote=“zwzsg, post:11, topic: 55864”][/quote]

Je teste ça, donc. Thanks.

[quote=“nusul, post:8, topic: 55864”][/quote]

Jamais eu de probleme, mais bon, j’ai toujours eu des IT qui faisaient en sorte que j’ai toujours mon D: hein.
Et sinon, ta condescendence, tu peux la garder hein.

[quote=“Faskil, post:12, topic: 55864”][/quote]

Ca n’est pas une question d’être débile ou pas. C’est juste que le delete récursif est vraiment l’exemple typique de la commande où une fausse manoeuvre déclenche une catastrophe. Discutes un peu avec des geeks, tout le monde à une anedocte la dessus.

Par exemple je ne pense pas qu’AnA-l soit débile. Pourtant son exemple aurait pu t’effacer plein de truc dans le cas où tu le lances après avoir effacé manuellement le /temp/. Pas par connerie ni par malice, juste parce qu’une erreur est très vite arrivé. Et peut importe l’intelligence, voir même, plus on est malin plus c’est dangereux (de grand pouvoirs…). Et j’ai rien contre AnA-l, c’est juste que son exemple est opportun.

Bref, c’est chiant de partir en insultes et méta-discussion juste parce que j’ai osé émettre l’avertissement d’usage.

[quote=« zwzsg, post:14, topic: 55864 »][/quote]

Parce que c’était clairement sous-entendu (je me vois mal venir demander de me pondre un script implicitement dangereux) et que remettre de l’huile sur le feu en sortant mon « del . récursif » de son contexte, c’était pas super malin non plus si l’idée c’était de calmer le jeu. :wink:

Mais passons.

Ouais, et pis nous on s’est expliqués entre gamins/vieuxconnards en pm sur irc avec nusul, tout va bien, on va chier tout les deux et demain ca ira mieux, etc etc :slight_smile:

[quote=« nusul, post:4, topic: 55864 »][/quote]

Je vais tester ça, merci. :slight_smile:

Bonjour,

Tu peux ajouter en début de ton script un test pour vérifier si le répertoire existe :

pushd D:\Studio\Temp\
IF %ERRORLEVEL% == 1 GOTO END
...
...
...
:END
EXIT

Avec bash il y a une option ( set -e ) pour sortir du script à la première erreur pour éviter à la fois de faire des erreurs, tout en n’ayant pas à tester chaque retour de commande avant le fatidique “rm”. Il n’existe pas un truc équivalent avec Powershell ?

(Pour info : http://www.davidpashley.com/articles/writing-robust-shell-scripts/)

Au moins on aura appris comment gérer le fait qu’en écrivant un script batch sous win, il s’arrête pas a la premiere erreur mais continu comme un gros con bourre a la bierre a executer la ligne d’après :slight_smile: