[BATCH] problème syntaxe

Fermé
sigmar - 23 févr. 2007 à 09:27
 J'ai trouvé - 22 oct. 2009 à 15:59
Bonjour à tous,

J'ai un problème sur un script qui gère les espace disque. Je vous le poste vou pourrez jugez par vous même.
Le script récupère les espace disques, puis fait une comparaison; et si l'espace disque est inférieur aux nombres renseigné; alors une alerte est envoyé dans un fichier texte sur un serveur distant.

Le problème se situe sur la syntaxe de la comparaison des deux nombres.... J'utilise "LSS" pour dire "inféieur à"; mais apperement il ne le prend pas en compte.... et j'ai essayer aussi avec le "GTR" (supérieur à").
PAR CONTRE lorsque je compare deux nombres (et non une variables et un nomnre) il fonctionne....

Mon fichier est bien en .cmd

VOUS POUVEZ ME DEPANNER LA ? ^_^

----------------------

@ECHO OFF

rem ############################
rem rem Récupération espace disque libre
rem Test ---- Copie de l'alerte -----
rem ############################



SETLOCAL
SET computer=%COMPUTERNAME%
SET PREFIX=Espace libre

rem On récupére l'espace disque libre sur le C:
c:
FOR /F "usebackq tokens=3" %%F IN (`DIR /-C ^| FIND /I "octets libres"`) DO echo "%PREFIX% %%F")


rem On récupére l'espace disque libre sur le D:
d:
FOR /F "usebackq tokens=3" %%D IN (`DIR /-C ^| FIND /I "octets libres"`) DO echo "%PREFIX% %%D")

rem On récupére l'espace disque libre sur le F:
f:
FOR /F "usebackq tokens=3" %%M IN (`DIR /-C ^| FIND /I "octets libres"`) DO echo "%PREFIX% %%M")


rem On compare pour générer l'alerte si il y a besoin

rem ###################

IF /I "1 000 000 000" GTR "%%F" goto faire
goto fin
:faire
echo "ALERTE sur le disque C: de %computer%" >> \\nom_serveur\d$\blat194\disk.txt
:fin


IF /I "4 000 000 000" GTR "%%D" goto faire
goto fin
:faire
echo "ALERTE sur le disque D: de %computer%" >> \\nom_serveur\d$\blat194\disk.txt
:fin

IF /I "4 000 000 000" GTR "%%M" goto faire
goto fin
:faire
echo "ALERTE sur le disque F: de %computer%" >> \\nom_serveur\d$\blat194\disk.txt
:fin

rem ####################

----------------------

MErci d'avance !!

4 réponses

J'ai trouvé
22 oct. 2009 à 15:59
Ce script fonctionne :


@ECHO OFF

rem ############################
rem Vérification
rem espace disque libre
rem ############################


SETLOCAL

rem Taille limite en Mo à fixer
SET limite=825
set /a Taille=%limite%*1000000

Rem Nom de la machine
SET computer=%COMPUTERNAME%

rem espace restant
SET PREFIX=Espace libre

rem ############################
rem affichage à supprimer
rem dans la routine
echo Limite de taille = %limite% Mo
echo Taille en octets = %Taille% Octets
echo.
rem ############################

rem On récupére l'espace disque libre sur le C:
c:
FOR /F "usebackq tokens=3" %%F IN (`DIR /-C ^| FIND /I "octets libres"`) DO set reste=%%F

rem ############################
rem affichage à supprimer
rem dans la routine
echo %PREFIX% %reste%Octets
echo.
rem ############################

rem On compare pour générer ou traiter l'alerte si il y a besoin
IF %Taille% GTR %reste% goto moins
goto suffisant

rem traitement de l'alerte

:moins
rem ############################
rem si taille insuffisante
rem placer le traitement ici
echo ALERTE moins de %limite% Mo disponible sur le disque C: de %computer%
rem ############################
goto fin

:suffisant
rem ############################
rem si taille suffisante
rem placer le traitement ici
echo CORRECT plus de %limite% Mo disponible sur le disque C: de %computer%
rem ############################
goto fin
2
blux Messages postés 26013 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
23 févr. 2007 à 10:06
Salut,

je crois que le DOS ne sait que comparer une égalité "==" et non un ordre de grandeur...
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
23 févr. 2007 à 12:57
Tu as essayer sans espaces pour tes nombre ?
est tu sur de l'appel "%%F" ?
0
et bien pour les espace j'ai essayé sans ^^ Mais avecle "/F" normalement c'est bon.

Et la variable"%%F", c'est justement le doute que j'ai ..... Avec une comparaison du type "LSS" peut on utiliser des variables ? (ou exclusivement des nombre ? )
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
25 févr. 2007 à 14:33
Je voi vraiment pas l'interet des structures conditionnels si ti peu pas comparer des variables.
Donc, je ne pense pas que ça vienne de là.*
Moi, j'aurai mi :
IF /I "1 000 000 000" GTR %F% goto faire
mais sans conviction!
0