Les finesses du batch
Scripts batch sous Windows, un petit pense-bête.
Voir aussi la page Script FTP.
:: Création d’un fichier vide :: ou remise à blanc d’un fichier existant. :: "> nul" : pas de sortie informative. type NUL>nom_chemin\nom_fichier.xxx > nul :: Extraction du nom et de l'extension d'un fichier : :: Le paramère %1 contient chemin et nom d'un fichier, set NOMFIC=%~n1%~x1 :: Changer un caractère par un autre. :: Exemple : dans la donnee %TRAV%, :: transforme la barre oblique inversée ("antislash" ou backslash) :: en barre oblique normale (slash) : set TRAV=%TRAV:\=^/% :: Verification reseau :: Remarque : le -w 2000 est imperatif sinon erreur pas monitoree ping -n 1 -w 2000 "%SRVFTP%">nul IF %errorlevel% == 0 GOTO sping ECHO *** Probleme reseau ou serveur ftp ** PAUSE GOTO :EOF :sping :: Verification d'une liste de codes d'erreur FTP :: "EnableDelayedExpansion" a cause du "for" setlocal EnableDelayedExpansion set listerr=501 530 550 553 :: La commande for (option /F) récupère la première chaîne :: de chaque ligne du log ftp :: La seconde commande for imbriquée dans la première va boucler sur :: les codes dans la variable listerr (option /I) pour comparaison :: avec le log. :: L'option tokens est facultative (defaut = 1) :: Noms de variables : un seul caractère :: C : 1ere chaine de la ligne lue :: R : lectures successives dans liste des codes FOR /F "tokens=1" %%C in (%LOG%) DO ( FOR %%R in (%listerr%) DO ( IF /I "%%C"=="%%R" (call ftperr.bat %%C & GOTO :EOF) ) ) :: FTPERR.bat appelé par ce qui précède IF %1==501 goto err501 IF %1==530 goto err530 IF %1==550 goto err550 IF %1==553 goto err553 set message=*** Non repertorie GOTO finerr :err501 set message=*** Erreur de syntaxe GOTO finerr :err530 set message=*** Echec de l'authentification (code utilisateur et/ou mot de passe) GOTO finerr :err550 set message=*** Repertoire inconnu GOTO finerr :err553 set message=*** Nom de fichier incorrect *** GOTO finerr :finerr ECHO *** Code ftp : %1% ECHO *** %message% PAUSE :: Récupère donnée d'un fichier "dernier.txt" :: %entree% : valeur lue if not exist %TMP%dernier.txt echo 1 > %TMP%dernier.txt set /p dernier_n=<%TMP%dernier.txt :: Calcul avec le no de jour du mois :: pour faire des calculs (option a) le nombre ne doit pas commencer par un zero :: (cf http://www.robvanderwoude.com/battech_leadingzero.php) set jour_n=%date:~0,2% IF "%jour_n:~0,1%"=="0" SET jour_n=%jour_n:~1% :: calcul set /a numero=%dernier_n%+%jour_n%