[BATCH] problème syntaxe

sigmar -  
 J'ai trouvé -
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

  1. J'ai trouvé
     
    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
  2. blux Messages postés 2046 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Salut,

    je crois que le DOS ne sait que comparer une égalité "==" et non un ordre de grandeur...
    0
  3. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    Tu as essayer sans espaces pour tes nombre ?
    est tu sur de l'appel "%%F" ?
    0
    1. sigmar
       
      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
  4. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    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