[RÉSOLU]Problème avec Flag

Une difficulté, une précision posez vos questions

Modérateur : WIN32-[GG]

Répondre
Nyrhu
Batcheur occasionnel
Messages : 3
Enregistré le : 19 avr. 2016 12:34

[RÉSOLU]Problème avec Flag

Message par Nyrhu »

Bonjour,

Dans le code source suivant, le flag "ok" (8e ligne) doit permettre de ne pas inscrire les données indiquée dans le fichier cible, le but étant d'inscrire cette ligne au premier passage de la boucle et les suivants inscriront une autre. Cependant, le flag ne se change pas au moment de prendre la valeur "ok".

La structure des dossiers est la suivants :
- Dossier "css" > script.bat
- Dossier "activites" > dossier "1" ; dossier "2" ; dossier "1" ; etc.
----------------------------------------------------- dossier "1" > dossier "ecole" > fichier "cover.jpg" ; fichier "photo001.jpg" ; fichier "photo002.jpg" ; fichier "photo003.jpg"

En faisant des tests, je me suis aperçu que la valeur du flag "ok" ne change pas dans les FOR. Que faire ? :(

Code : Tout sélectionner

@echo off
SET /p dossier1="          > Entrez le nom du Dossier de la section (ex: Activites) : "
SET output="../%dossier1%/1/%%A/script.js"
SET code_html="../%dossier1%/1/code_html.txt"
>%code_html% (
   ECHO Introduisez ces lignes de code dans votre page HTML : &ECHO. &ECHO.
)
SET ok=no
FOR /F "delims=" %%A IN ('DIR /B /A:D "..\%dossier1%\1\"') DO (
   ECHO document^.write^(^"^\>%output%
   ECHO ^<div class^=\"cadre\" style^=\"background-image: url('%dossier1%/1/%%A/cover.jpg');\"^>\>>%output%
   FOR /F "delims=" %%B IN ('DIR /B "..\%dossier1%\1\%%A\*.jpg"') DO (
      IF NOT %%B==cover.jpg (
         echo test : %ok%
         pause
         IF %ok%==ok (
            (
               ECHO ^<a class^=\"galerie\" href^=\"%dossier1%/1/%%A/%%B\" data-lightbox^=\"%%A\" data-title^=\"\"^>^</a^>\
            )>>%output%
         ) ELSE (
            (
               ECHO ^<a class^=\"galerie\" href^=\"%dossier1%/1/%%A/%%B\" data-lightbox^=\"%%A\" data-title^=\"\"^>^<h6^>TITRE^<span^>^<br /^>DATE^</span^>^</h6^>^</a^>\
            )>>%output%
         )
      )
   )
   (
      ECHO ^<script type^="text/javascript" src="%dossier1%/1/%%A/script.js"^>^</script^>
   )>> %code_html% 
   (
      ECHO ^</div^>\
      ECHO ^"^)
   )>>%output%
)
ECHO.
ECHO                           [ Operation terminee ]
ECHO                      Pressez une touche pour continuer
PAUSE>NUL
Modifié en dernier par Nyrhu le 19 avr. 2016 19:39, modifié 1 fois.
Nyrhu
Batcheur occasionnel
Messages : 3
Enregistré le : 19 avr. 2016 12:34

Re: Problème avec Flag

Message par Nyrhu »

J'ai contourné le problème en créant un flag "physique".

Code : Tout sélectionner

@echo off
ECHO flag > %tmp%\flag.txt
SET /p dossier1="          > Entrez le nom du Dossier de la section (ex: Activites) : "
SET output="../%dossier1%/1/%%A/script.js"
SET code_html="../%dossier1%/1/code_html.txt"
>%code_html% (
   ECHO Introduisez ces lignes de code dans votre page HTML : &ECHO. &ECHO.
)
FOR /F "delims=" %%A IN ('DIR /B /A:D "..\%dossier1%\1\"') DO (
   (
      ECHO document^.write^(^"^\
   )>%output%
   (
      ECHO ^<div class^=\"cadre\" style^=\"background-image: url('%dossier1%/1/%%A/cover.jpg');\"^>\
   )>>%output%
   FOR /F "delims=" %%B IN ('DIR /B "..\%dossier1%\1\%%A\*.jpg"') DO (
      IF NOT %%B==cover.jpg (
         IF EXIST %tmp%\flag.txt (
            (
               DEL /F /Q %tmp%\flag.txt
               ECHO ^<a class^=\"galerie\" href^=\"%dossier1%/1/%%A/%%B\" data-lightbox^=\"%%A\" data-title^=\"\"^>^<h6^>TITRE^<span^>^<br /^>DATE^</span^>^</h6^>^</a^>\
            )>>%output%
         ) ELSE (
            (
               ECHO ^<a class^=\"galerie\" href^=\"%dossier1%/1/%%A/%%B\" data-lightbox^=\"%%A\" data-title^=\"\"^>^</a^>\
            )>>%output%
         )
      )
   )
   (
      ECHO ^<script type^="text/javascript" src="%dossier1%/1/%%A/script.js"^>^</script^>
   )>> %code_html%
   (
      ECHO ^</div^>\
      ECHO ^"^)
   )>>%output%
)
ECHO.
ECHO                           [ Operation terminee ]
ECHO                      Pressez une touche pour continuer
PAUSE>NUL
pleaseTellMeWhoIam
Batcheur débutant
Messages : 10
Enregistré le : 05 nov. 2015 07:48

Re: [RÉSOLU]Problème avec Flag

Message par pleaseTellMeWhoIam »

salut,
c'est normal que ta variable "ok" ne change pas de valeur puisque tu ne poses aucune condition à l'intèrieur des boucles pour qu'elle en change ; et en supposant qu'il y ait une condition, il faudra activer l'expansion retardée avant de déclarer la variable "ok" et bien penser à replacer les "%" par des "!"
Nyrhu
Batcheur occasionnel
Messages : 3
Enregistré le : 19 avr. 2016 12:34

Re: [RÉSOLU]Problème avec Flag

Message par Nyrhu »

En effet, me flag physique ne fonctionne plus :p (je fais évoluer mon code sans arrêt^^), j'ai donc adapté le code suis tes conseils :)
Répondre