Shell Windows [Batch]

Fermé
Scouby64 Messages postés 186 Date d'inscription mercredi 9 août 2006 Statut Membre Dernière intervention 30 juin 2009 - 7 oct. 2008 à 10:57
Scouby64 Messages postés 186 Date d'inscription mercredi 9 août 2006 Statut Membre Dernière intervention 30 juin 2009 - 7 oct. 2008 à 14:49
Bonjour,

Je cherche à automatiser la suppression de sauvegarde au bout d'un certain nombre de jour sur le serveur de sauvegarde de mon entreprise.
J'arrive à un résultat qui bloque au niveau de la boucle FOR :

@ECHO ON

REM VARIABLES :
SET YYYYMMDD=%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2%
SET mois=%DATE:~3,2%
SET jour=%DATE:~0,2%
SET moismax="01-03-05-07-08-10-12"
SET moismin="04-06-09-11"
SET moisfev="02"

REM DEBUT :
MKDIR %YYYYMMDD%

REM ON DESCIDE DE GARDER 14j DE SAUVEGARDE
SET /a jour-=14
IF %jour% GEQ 1 GOTO OK

    FOR /F "TOKENS=%i DELIMS=-" %%i IN %moismax% DO(
	IF %mois%=%%i IN %moismax% GOTO MAX
        IF %mois%=%%i IN %moisfev% GOTO FEV	
	GOTO MIN
    )	

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%
REM SET njour=%njour%*(-1)
SET njour=31+%njour%
SET nmois=%i%-1
SET nYYYYMMDD=%DATE:~6,4%-%nmois%-%njour%
GOTO SUITE

REM SI MOIS DE FEVRIER
:FEV
SET njour=%jour%
REM SET njour=%njour%*(-1)
SET njour=28+%njour%
SET nmois=%i%-1
SET nYYYYMMDD=%DATE:~6,4%-%nmois%-%njour%
GOTO SUITE

REM SI MOIS DE 30j
:MIN
SET njour=%jour%
REM SET njour=%njour%*(-1)
SET njour=30+%njour%
SET nmois=%i%-1
SET nYYYYMMDD=%DATE:~6,4%-%nmois%-%njour%
GOTO SUITE

REM SUPPRESSION ANCIENNE SAUVEGARDE
:SUITE
RD %nYYYYMMDD% /s /q
GOTO FIN
	
:FIN


PAUSE>NUL


Pourriez vous m'aider?

Merci d'avance.
A voir également:

4 réponses

DOWN !
0
Scouby64 Messages postés 186 Date d'inscription mercredi 9 août 2006 Statut Membre Dernière intervention 30 juin 2009 10
7 oct. 2008 à 11:22
UP!
-2
Scouby64 Messages postés 186 Date d'inscription mercredi 9 août 2006 Statut Membre Dernière intervention 30 juin 2009 10
7 oct. 2008 à 11:46
Malin ça!

UP!
-2
Scouby64 Messages postés 186 Date d'inscription mercredi 9 août 2006 Statut Membre Dernière intervention 30 juin 2009 10
7 oct. 2008 à 14:49
Bon à force d'espérer j'ai fini par trouver la solution sans FOR :

@ECHO ON

REM VARIABLES :
SET YYYYMMDD=%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2%
SET mois=%DATE:~3,2%
SET jour=%DATE:~0,2%

REM DEBUT :
MKDIR %YYYYMMDD%

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
RD /s /q %nYYYYMMDD%
GOTO FIN
	
:FIN

Bien sur cette version est perfectible puisqu'elle ne prend pas en compte actuellement, les années bissextile...
Avis aux amateurs !




-2