14/03/2020Si vous avez besoin de télécharger régulièrement les fichiers d'un répertoire, voici un script Batch qui répond à ce besoin. Il s'appuie sur le logiciel WinSCP, qui permet d'interagir avec un FTP directement en ligne de commande (la commande ftp.exe de Windows peut aussi le faire mais elle est à présent obsolète car elle ne permet pas la discussion en mode passif, ce qui est bloquant quand on a un pare-feu ou un routeur).
Il faut au préalable :
- préciser en début de script l'IP du serveur, l'identifiant de connexion et le mot de passe.
- préciser les répertoires distant et local
- avoir le fichier winscp.exe dans le même répertoire que ce fichier BAT
Le script est prévu pour télécharger tous les fichiers Gzip du répertoire FTP et assurer une purge automatique des fichiers déjà récupérés.
REM Télécharge fichiers FTP
REM Eric Quillévéré - 02/2020
REM
REM Attention : si un problème de droit survient (impossibilité pour WinSCP de remplacer un fichier), il n'y a aucune alerte
@echo Off
cls
set "NB_FICHIERS_CONSERVES=14"
set "FTP_SERVEUR=10.0.0.0"
set "FTP_IDENTIFIANT=mon_ident"
set "FTP_MDP=mon_mdp"
set "FTP_REP_DISTANT=/var/sauvegardes/appli1"
set "FTP_REP_LOCAL=D:\Sauvegardes\appli1"
CALL :telecharge
set "FTP_REP_DISTANT=/var/sauvegardes/appli2"
set "FTP_REP_LOCAL==D:\Sauvegardes\appli2"
CALL :telecharge
:fin
EXIT /B
:telecharge
echo Telecharge nouveaux fichiers de %FTP_REP_LOCAL%
winscp.exe /command ^
"open ftp://%FTP_IDENTIFIANT%:%FTP_MDP%@%FTP_SERVEUR%" ^
"get -preservetime -neweronly -filemask=*.gz %FTP_REP_DISTANT%/* %FTP_REP_LOCAL%" ^
"exit"
CALL :purge
exit /b
:purge
echo Supprime anciens fichiers de %FTP_REP_LOCAL%
for /f "skip=%NB_FICHIERS_CONSERVES% eol=: delims=" %%F in ('DIR "%FTP_REP_LOCAL%\*.gz" /b /o-d') do (
echo - Suppression de %FTP_REP_LOCAL%\%%F
@del "%FTP_REP_LOCAL%\%%F"
)
exit /b
Dernière modification le 14/03/2020 - Quillevere.net