[Batch] RD avec variable
Résolu
Scouby64
Messages postés
188
Date d'inscription
Statut
Membre
Dernière intervention
-
chuka Messages postés 965 Date d'inscription Statut Membre Dernière intervention -
chuka Messages postés 965 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaite automatiser la suppression de sauvegarde sur une serveur de sauvegarde afin que le disque ne sature pas.
Je suis arrivé à pondre ce script qui s'exécute juste avant le lancement d'un sauvegarde :
Le problème est au niveau de la commande RD /s /q %nYYYYMMDD%
Lors des test, cette variable n'apparait pas, et donc il n'arrive pas a supprimer mon dossier date.
Merci pour d'éventuelles propositions.
Je souhaite automatiser la suppression de sauvegarde sur une serveur de sauvegarde afin que le disque ne sature pas.
Je suis arrivé à pondre ce script qui s'exécute juste avant le lancement d'un sauvegarde :
ECHO ON SET YYYYMMDD=%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2% MKDIR %YYYYMMDD% REM ###### SUPPRESSION DES VERSIONS ANTERIEURES ###### REM ### VARIABLES ### SET mois=%DATE:~3,2% SET jour=%DATE:~0,2% REM ### DEBUT ### REM ### ON DESCIDE DE GARDER 14j DE SAUVEGARDE ### SET /a jour-=14 REM ### DANS LE CAS OU ANCIENNE SAUV EST DANS LE MEME MOIS ### IF %jour% GEQ 1 GOTO OK REM ### SINON... ### SET /a mois-=1 IF "0%mois%"=="01" GOTO :MAX IF "0%mois%"=="02" GOTO :FEV IF "0%mois%"=="03" GOTO :MAX IF "0%mois%"=="04" GOTO :MIN IF "0%mois%"=="05" GOTO :MAX IF "0%mois%"=="06" GOTO :MIN IF "0%mois%"=="07" GOTO :MAX IF "0%mois%"=="08" GOTO :MAX IF "0%mois%"=="09" GOTO :MIN IF "0%mois%"=="10" GOTO :MAX IF "0%mois%"=="11" GOTO :MIN IF "0%mois%"=="12" GOTO :MAX REM ### SI MEME MOIS ### :OK SET nYYYYMMJJ=%DATE:~6,4%-%DATE:~3,2%-%jour% GOTO SUITE REM ### SI MOIS DE 31j ### :MAX SET njour=%jour% SET /a njour=31+%njour% SET nYYYYMMDD=%DATE:~6,4%-0%mois%-%njour% GOTO SUITE REM ### SI MOIS DE FEVRIER ### :FEV SET njour=%jour% SET /a njour=28+%njour% SET nYYYYMMDD=%DATE:~6,4%-0%mois%-%njour% GOTO SUITE REM ### SI MOIS DE 30j ### :MIN SET njour=%jour% SET /a njour=30+%njour% SET nYYYYMMDD=%DATE:~6,4%-0%mois%-%njour% GOTO SUITE REM ### SUPPRESSION ANCIENNE SAUVEGARDE ### :SUITE SET test=%nYYYYMMDD% %test% RD /s /q "%nYYYYMMDD%" GOTO FIN :FIN PAUSE
Le problème est au niveau de la commande RD /s /q %nYYYYMMDD%
Lors des test, cette variable n'apparait pas, et donc il n'arrive pas a supprimer mon dossier date.
Merci pour d'éventuelles propositions.
A voir également:
- [Batch] RD avec variable
- Fichier batch - Guide
- Rd client - Télécharger - Divers Réseau & Wi-Fi
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp ✓ - Forum Word
- Batch pause 10 secondes ✓ - Forum Programmation
- Vba range avec variable ✓ - Forum VB / VBA
3 réponses
Salut,
je ne comprend pas pourquoi tu ne mets pas directement:
set test=%DATE:~6,4%-%mois%-%ta_nouvelle_variable_jour% dans chaque label.
Ensuite dans tes IF successif pour le mois,
IF %mois%==1 goto :...
IF %mois%==2 goto :...
.
.
.....
devrais faire l'affaire , et si tu veux avoir le mois sur 2 chiffres tu rajoutes dans chaque label:
if %mois% lss 10 set mois=0%mois%
car IF "0%mois%"=="11" GOTO :MIN donc mois=12 et là tu vas comparer la chaine de caractere "011" avec "11" ce qui sera toujours faux...
J'espere ca pourra t'aider!!
@+
PS: tu devrais rajouter IF %mois%==0 car si mois=1 et le jour<14 tu fera mois-1=0..
je ne comprend pas pourquoi tu ne mets pas directement:
set test=%DATE:~6,4%-%mois%-%ta_nouvelle_variable_jour% dans chaque label.
Ensuite dans tes IF successif pour le mois,
IF %mois%==1 goto :...
IF %mois%==2 goto :...
.
.
.....
devrais faire l'affaire , et si tu veux avoir le mois sur 2 chiffres tu rajoutes dans chaque label:
if %mois% lss 10 set mois=0%mois%
car IF "0%mois%"=="11" GOTO :MIN donc mois=12 et là tu vas comparer la chaine de caractere "011" avec "11" ce qui sera toujours faux...
J'espere ca pourra t'aider!!
@+
PS: tu devrais rajouter IF %mois%==0 car si mois=1 et le jour<14 tu fera mois-1=0..
Merci beaucoup pour ta réponse et tes conseils. Après modification, voici la nouvelle version qui fonctionne, je pense, dans tous les cas :
Encore merci chuka.
SET YYYYMMDD=%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2% MKDIR %YYYYMMDD% REM ###### SUPPRESSION DES VERSIONS ANTERIEURES ###### REM ### VARIABLES ### SET mois=%DATE:~3,2% SET jour=%DATE:~0,2% REM ### DEBUT ### REM ### ON DESCIDE DE GARDER 14j DE SAUVEGARDE ### SET /a jour-=14 REM ### DANS LE CAS OU ANCIENNE SAUV EST DANS LE MEME MOIS ### IF %jour% GEQ 1 GOTO OK REM ### SINON... ### SET /a mois-=1 REM ### Cas du mois de janvier ### IF "%mois%"==0 GOTO :DEC :SUI IF "0%mois%"=="01" GOTO :MAX IF "0%mois%"=="02" GOTO :FEV IF "0%mois%"=="03" GOTO :MAX IF "0%mois%"=="04" GOTO :MIN IF "0%mois%"=="05" GOTO :MAX IF "0%mois%"=="06" GOTO :MIN IF "0%mois%"=="07" GOTO :MAX IF "0%mois%"=="08" GOTO :MAX IF "0%mois%"=="09" GOTO :MIN IF "%mois%"=="10" GOTO :MAX IF "%mois%"=="11" GOTO :MIN IF "%mois%"=="12" GOTO :MAX REM ### SI MEME MOIS ### :OK RD /s /q %DATE:~6,4%-%DATE:~3,2%-%jour% GOTO FIN REM ### SI MOIS DE 31j ### :MAX SET njour=%jour% SET /a njour=31+%njour% IF "%mois%" LSS "10" GOTO :SIM IF "%mois%" GEQ "10" GOTO :DOU REM ### SI MOIS DE FEVRIER ### :FEV SET njour=%jour% SET /a njour=28+%njour% IF "%mois%" LSS "10" GOTO :SIM IF "%mois%" GEQ "10" GOTO :DOU REM ### SI MOIS DE 30j ### :MIN SET njour=%jour% SET /a njour=30+%njour% IF "%mois%" LSS "10" GOTO :SIM IF "%mois%" GEQ "10" GOTO :DOU REM ### SUPPRESSION ANCIENNE SAUVEGARDE pour mois <10 ### :SIM RD /s /q %DATE:~6,4%-0%mois%-%njour% GOTO FIN REM ### SUPPRESSION ANCIENNE SAUVEGARDE pour mois >=10 ### :DOU RD /s /q %DATE:~6,4%-%mois%-%njour% GOTO FIN :DEC SET mois=12 GOTO SUI :FIN
Encore merci chuka.