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