Envoyer les fichier d'un répertoire un à un par ftp sous DOS

Fermé
richy - Modifié le 28 févr. 2023 à 14:14
brucine Messages postés 17003 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 1 octobre 2024 - 2 mars 2023 à 20:17

Bonjour,

rep (fichier1, fichier2, fichier3,...................fichiern)

Je voudrais lire fichier par fichier et envoyer un à un par FTP vers la destination avec la boucle for sous Dos.

Merci d'avance.

A voir également:

4 réponses

barnabe0057 Messages postés 14452 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 3 août 2024 4 915
28 févr. 2023 à 16:58

Bonjour,

Il faut d'abord préciser le contexte :

- s'agit-il d'un serveur FTP, SFTP ou bien FTPS ?

- quand tu dis DOS ça veut dire l'invite de commandes (cmd.exe) ?



0

Bonjour,

merci pour votre réponse.

il s'agit d'un simple ftp dans un script batch sous Windows.

cordialement.

0
brucine Messages postés 17003 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 1 octobre 2024 2 413
28 févr. 2023 à 17:06

Bonjour,

Je suppose qu'il ne s'agit pas de mode Dos réel mais d'un batch en mode Dos émulé sous Windows.

Sauf à vouloir pour une raison qui m'échappe fermer et rouvrir la connexion FTP pour chaque fichier ou bien n'envoyer qu'une partie des fichiers selon un critère particulier, l'intérêt d'une boucle FOR m'échappe aussi.

Pourquoi une fois la connexion et le dossier de destination établis ne pas se contenter de

prompt

mput (mondossiersource)\*.*

0

Bonjour,

Effectivement il s'agit d'un script batch en mode dos (cmd.exe).

le soucis d'envoyer par lot ou par répertoire c'est les coupures du ftp, le transfert des fichiers ne s'effectue entièrement.

Merci pour votre attention!  

0
brucine Messages postés 17003 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 1 octobre 2024 2 413 > richy
1 mars 2023 à 11:05

Je ne comprends toujours pas: même si on boucle pour envoyer les fichiers l'un après l'autre, ils le seront toujours exactement comme par une commande FTP appliquée à tous les fichiers de ce répertoire, on peut toujours temporiser dans la boucle entre chaque fichier mais, dans tous les cas, ça n'empêchera pas une déconnexion éventuelle?

Ou bien on ne doit pas boucler sur le transfert des fichiers à proprement parler mais sur la connexion, se connecter, envoyer un fichier, se déconnecter, se reconnecter et ainsi de suite.

0

Bonjour,

oui je trouve que c'set plus correcte de boucler sur la connexion, si connecté on envoi sinon on envoi pas!

pouvez vous interpréter ça en script batch?

Merci

0
brucine Messages postés 17003 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 1 octobre 2024 2 413
1 mars 2023 à 16:54

En supposant que l'on n'ait pas à contrôler que le fichier n'existe pas déjà sur le serveur distant ni à le supprimer après transfert dans la source, quelque chose dans ce genre là, je n'ai pas testé, je n'ai plus de site Web actif.

 

@ECHO OFF

CD /D E:\dossier_source
FOR /F "delims=" %%a in ('dir /b E:\dossier_source\*.*') DO SET FILE=%%a & CALL :PROCESS

:PROCESS
FTP tartempion.bidule.net
FTP user (username) (password) (account)
FTP cd (dossier_destination)
PUT %FILE%
FTP close

:EOF
0

Bonsoir,

mon ftp va faire du "get" ( de la récupération de fichiers)

c'est à dire je me connecte en ftp sur le pc distant, je liste le nombre de fichiers à rapatrier, 

ensuite je fais ma boucle for pour récupérer les fichiers distant  un à un  sur mon pc.

Merci.

0
brucine Messages postés 17003 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 1 octobre 2024 2 413
2 mars 2023 à 20:17

Ta question initiale était dans l'autre sens.

ça ne change pas fondamentalement la question sinon que les commandes DIR et CD doivent spécifier le dossier serveur cible par son chemin réseau \\serveur\répertoire sur lequel on doit bien sûr avoir des droits d'accès et qu'il faut bien sûr remplacer PUT par GET et soit exécuter le batch à partir du dossier local cible, soit spécifier explicitement son chemin dans la commande GET: GET %FILE% (mon_chemin_local)

0