1 pièce(s) jointe(s)
Problème avec les ARRAY et plusieurs boucles FOR imbriquées + DelayedExpansion
Bonjour,
J'ouvre cette discussion afin d'obtenir de vous quelques conseils par rapport à un script batch que j'essaye de faire pour mon école (une sorte de projet de mi-parcours).
Mais j'ai quelques soucis. j'ai des scripts externes, qui créés à la fin plusieurs fichiers contenant des données. Je dois vérifier qu'un fichier spécifique créé est bien dans le répertoire ARCHIVES, et vérifier par la suite que son poids est différent de 0 octets.
Si le poids du fichier est de 0, le script doit interroger l'utilisateur afin de savoir s'il termine le programme ou s'il continue (Oui/Non).
Si OUI : on continue
Si non : On quitte le programme
Exemple de nom de fichier à traiter : DFEA_181029_0300.txtPièce jointe 423040
Image : Plan des répertoires
La seule chose qui différencie ce fichiers des autres est la première partie de son nom ("DFEA") et la date de création ("181029").
Mon but est de faire une boucle de ces 8 exécutions de script.
Voici ce que j'ai pu faire actuellement :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| call %AccDepot%DFEA.bat /w
set error=0
for /r "%AccArchive%" %%i in (DFEA_%datej%*.txt) do set taille=%%~zi & set nom=%%~nxi
echo -- Fichier : %nom% --- Taille : %taille% octets --
if %taille%==0 echo =================== /!\ WARNING /!\ ====================
if %taille%==0 set /p error=Le fichier cree "%nom%" est vide (0 octets), voulez-vous continuer? (oui/non) :
if %taille%==0 call :iferror
echo.
:iferror
if /i not %error%==oui echo.
if /i not %error%==oui echo -- -- -- & echo Fin de l'integration ! & echo -- -- -- & timeout /t 2 > nul & exit |
(après je change juste DFEA avec le nom des autres scripts)
Et maintenant la boucle que j'ai essayé de faire (non fonctionnelle, le terminal se ferme instantanément) :? :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| @echo off
setlocal enableDelayedExpansion
:: variable chemin acces
set AccTmp=D:\test\tmp\
set AccDepot=D:\test\depot\
set AccArchive=D:\test\archive\
set datej=%date:~8,2%%date:~3,2%%date:~0,2%
set id=DFEA DPRG DPZERO DPCONF EPZERO EPCONF1 NFIXOPFI FIXOPFI
for /r "%AccArchive%" %%i in (%id%_%datej%*.txt) do (
echo %%~ni
call %AccDepot%%%~ni.bat /w
set error=0
for /r "%AccArchive%" %%i in (%%~ni_%datej%*.txt) do (
set nom=%%~nxi & set taille=%%~zi
echo -- Fichier : %%~nxi --- Taille : %%~zi octets --
if %taille%==0 echo =================== /!\ WARNING /!\ ====================
if %taille%==0 set /p error=Le fichier cree "%nom%" est vide (0 octets), voulez-vous continuer? (oui/non) :
)
echo.
)
pause |
Merci par avance pour toute l'aide que vous pourrez m'apporter :ccool: