Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1213 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Batch DOS] Test de 2 variables - [RESOLU]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Batch DOS] Test de 2 variables - [RESOLU]

n°932566
ZephIIr
Posté le 27-12-2004 à 15:27:13  profilanswer
 

Bonjour à tous et à toutes,  
 
J'ai un soucis lors de l'execution d'un batch DOS.  
Voilà le contexte: j'ai un fichier en entrée (fic_tmp_2.tmp) qui possède X lignes et je recherche les doublons.  
Pour cela j'ai écrit le programme suivant:  
 

Code :
  1. @echo off
  2. set prec_=""
  3. for /F %%A in (fic_tmp_2.tmp) do (
  4.    set actu_=%%A
  5.    if "%actu_%"=="%prec_%" call doublons.bat
  6.    set prec_=%%A
  7. )
  8. pause


Le batch doublons ne fait qu'écrire la ligne en cours dans un autre fichier.  
 
Mon problème est que le programme ne fait jamais appel au doublons.bat alors que plusieurs doublons sont présents et que les variables actu_ et prec_ sont identiques.
Le test 'if' ne semble pas fonctionner...
 
le format des chaines en entrée est:  
 
$$$_##_$$$##_########.xml--##/##/####  
 
ou $ sont des lettres et # des chiffres.  
J'ai essayé avec des chaines toutes simples comme "AA"... ca ne change rien...  
 
Merci d'avance si vous voyez ce qui cloche ou si vous voulez des précisions.  :)


Message édité par ZephIIr le 28-12-2004 à 10:36:08
mood
Publicité
Posté le 27-12-2004 à 15:27:13  profilanswer
 

n°932606
physis
Posté le 27-12-2004 à 17:07:47  profilanswer
 

ZephIIr a écrit :


@echo off  
set prec_=""
for /F %%A in (fic_tmp_2.tmp) do (  
   set actu_=%%A  
   if "%actu_%"=="%prec_%" call doublons.bat  
   set prec_=%%A
)  
pause  


 
Sans la "prise en charge de l'expansion retardée de variables d'environnement" comme le dit l'aide de set, tu n'as pas le droit de faire ça.
Si tu veux que ton batch fonctionne comme tu le veux, il faut que tu lances ton cmd.exe avec l'option

Code :
  1. /V:ON

et que tu utilises !VAR! a la place de %VAR%.
 

Code :
  1. @echo off
  2. set VAR=avant
  3. if "%VAR%"=="avant" (
  4.   echo "1ere egalite OK"
  5.   set VAR=apres
  6.   echo %VAR%
  7.   echo !VAR!
  8. )


 
Ce qui donne par defaut:

Code :
  1. "1ere egalite OK"
  2. avant
  3. !VAR!


 
et avec

Code :
  1. cmd /V:ON


Code :
  1. "1ere egalite OK"
  2. avant
  3. apres


Message édité par physis le 27-12-2004 à 17:10:58
n°932924
ZephIIr
Posté le 28-12-2004 à 10:34:42  profilanswer
 

Merci bcp pour ta réponse, en fait il s'agissait un pb de parenthèses de la boucle FOR apparemment.
J'utilise le code suivant qui fonctionne nickel  :)  

Code :
  1. @echo off
  2. set prec_=""
  3. for /F %%A in (fic_tmp_2.tmp) do call :test %%A
  4. goto end
  5. :test
  6. set actu_=%1
  7. if "%actu_%"=="%prec_%" call doublons.bat
  8. set prec_=%1
  9. pause
  10. goto :eof
  11. :End
  12. set prec_=
  13. set actu_=


Message édité par ZephIIr le 28-12-2004 à 10:35:17

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Batch DOS] Test de 2 variables - [RESOLU]

 

Sujets relatifs
creer des repertoire sous dos[resolu] Connection a une db access
Fermer une appli windoz via un batchCallback resolu à la compilation...
[Shell] Comparaison de chaines ----> résolu avec grep :)[RESOLU] Pb de lancement de fichiers php
[résolu] StackOverflowError avec les ObjectOutputStreamafficher un message en dos avec delphi 7
[C] getch getchar getc et gcc 3.3.2 [Resolu][résolu] insertion flash (ie)
Plus de sujets relatifs à : [Batch DOS] Test de 2 variables - [RESOLU]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR