Bonjour,
 
Je rencontre actuellement un soucis avec un batch dans lequel j'utilise un test 'IF' dans une boucle 'FOR'.
Je m'explique :
 
- J'ai deux fichiers contenant du texte, JRN_ELEC.FIC dont le contenu est (chacune des lignes correspond à un nom de fichier) :
1-20051021
 1-20051020_20051130
 1-20051020
 1-20051019
 1-20051018  | 
et le fichier JRN_ELEC.VAR dont le contenu est :
------------------------------------------------------------------------------
 ---------------------------------------------------------------------
 -----------------------------------------------------------------------
 -----------------------------------   1-20051020_20051130                                                            
   1-20051020                                                                    
   (2 rows affected)  | 
- Mon script batch doit vérifier s'il y a dans le fichier JRN_ELEC.VAR un ou plusieurs nom présent dans le fichier JRN_ELEC.FIC.
Pour se faire, mon script compare chacune des lignes du fichier JRN_ELEC.FIC avec le contenu de JRN_ELEC.VAR, et s'il trouve une même valeur dans les deux fichiers, il exécute la copie du fichier en question d'un endroit vers un autre.
Voici le scrit :
for /f "delims=" %%a in ('type JRN_ELEC.FIC') do (
 echo Fichier à copier : %%a
 findstr "%%a" JRN_ELEC.VAR
 echo Errorlevel : %errorlevel%
 if %errorlevel%==0 XCOPY /C /E /F /I /H /R /Y E:\REP1\%%a\*.* E:\REP2\%%a
 echo Fichier traité : %%a
 )  | 
Mon incompréhension : et bien, quelque soit la valeur de %%a (elle change bien à chaque passage dans ma boucle), j'ai toujours la même valeur pour %errorlevel%. Et il semblerait que cette valeur reste la même que celle qui a été trouvée lors du premier passage dans la boucle.
 
Donc, je ne comprends pas pourquoi cette valeur %errorlevel% n'évolue-t-elle pas, et que ma clause 'IF' réagisse de la même manière pendant tout le déroulement du script.
Si quelqu'un a une idée ...
 
 
Ci-dessous la capture du déroulement de mon script (sous Windows 2000) :
C:\sauvegardes>for /F "delims=" %a in ('type JRN_ELEC.FIC') do (
 echo Fichier à copier : %a  
  findstr "%a" JRN_ELEC.VAR  
  echo Errorlevel : 1  
  if 1 == 0 XCOPY /C /E /F /I /H /R /Y E:\REP1\%a\*.* E:\REP2\%a  
  echo Fichier traité : %a   )     C:\sauvegardes>(
 echo Fichier à copier : 1-20051021  
  findstr "1-20051021" JRN_ELEC.VAR  
  echo Errorlevel : 1  
  if 1 == 0 XCOPY /C /E /F /I /H /R /Y E:\REP1\1-20051021\*.* E:\REP2\1-20051021  
  echo Fichier traité : 1-20051021   )   Fichier à copier : 1-20051021
 Errorlevel : 1
 Fichier traité : 1-20051021
   C:\sauvegardes>(
 echo Fichier à copier : 1-20051020_20051130  
  findstr "1-20051020_20051130" JRN_ELEC.VAR  
  echo Errorlevel : 1  
  if 1 == 0 XCOPY /C /E /F /I /H /R /Y E:\REP1\1-20051020_20051130\*.* E:\REP2\1-20051020_20051130  
  echo Fichier traité : 1-20051020_20051130   )   Fichier à copier : 1-20051020_20051130
  1-20051020_20051130                                                             Errorlevel : 1
 Fichier traité : 1-20051020_20051130
   C:\sauvegardes>(
 echo Fichier à copier : 1-20051020  
  findstr "1-20051020" JRN_ELEC.VAR  
  echo Errorlevel : 1  
  if 1 == 0 XCOPY /C /E /F /I /H /R /Y E:\REP1\1-20051020\*.* E:\REP2\1-20051020  
  echo Fichier traité : 1-20051020   )   Fichier à copier : 1-20051020
  1-20051020_20051130                                                              1-20051020                                                                    
 Errorlevel : 1
 Fichier traité : 1-20051020
   C:\sauvegardes>(
 echo Fichier à copier : 1-20051019  
  findstr "1-20051019" JRN_ELEC.VAR  
  echo Errorlevel : 1  
  if 1 == 0 XCOPY /C /E /F /I /H /R /Y E:\REP1\1-20051019\*.* E:\REP2\1-20051019  
  echo Fichier traité : 1-20051019   )   Fichier à copier : 1-20051019
 Errorlevel : 1
 Fichier traité : 1-20051019
   C:\sauvegardes>(
 echo Fichier à copier : 1-20051018  
  findstr "1-20051018" JRN_ELEC.VAR  
  echo Errorlevel : 1  
  if 1 == 0 XCOPY /C /E /F /I /H /R /Y E:\REP1\1-20051018\*.* E:\REP2\1-20051018  
  echo Fichier traité : 1-20051018   )   Fichier à copier : 1-20051018
 Errorlevel : 1
 Fichier traité : 1-20051018  | 
 
Message édité par jdeheyn le 16-12-2005 à 13:51:57