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.txt
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 :
(après je change juste DFEA avec le nom des autres scripts)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Et maintenant la boucle que j'ai essayé de faire (non fonctionnelle, le terminal se ferme instantanément):
Merci par avance pour toute l'aide que vous pourrez m'apporter
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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![]()
Partager