Le web de Dominique Guebey – Bazar informatique

Page : http://www.dg77.net/tekno/manuel/bat.htm


  D o m i n i q u e   G u e b e y    J u n g l e    Bazar informatique

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%