Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 2
Aller à la page: 1, 2  >
BATCH ftp problème mget
Auteur Message
Répondre en citant
Message BATCH ftp problème mget 
Bonjour,

J'ai un problème incompréhensible en ftp

Je cherche à faire un script tout bête via un batch sur windows qui récupère des fichiers présent dans un dossier de mon ftp ovh

J'ai donc fait ceci :

le .bat
Code:

@echo off
ftp -s:D:\S_RECUP\ftp_script -iv


et le ftp_script
Code:

open [url=http://ftp.DOMAIN.com]ftp.DOMAIN.com[/url]
USER
PASS
mget *D*


la connexion se fait bien, c'est le mget qui me pose problème, il ne se finit pas, le curseur clignotant passe en dessous et continue à clignoter clignoter clignoter jusqu'à que je fasse une interruption
il m'indique ensuite "Impossible de trouver la liste des fichiers distants"

là ou c'est incompréhensible c'est que le même script avec un mget * à la place du mget *D* fonctionne bien


Je ne sais pas que faire ... je need help please !!!

Merci d'avance



Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message BATCH ftp problème mget 
Salut
j'ai essayé et *D* ça n'existe pas.
En revanche GET ça marche mais il faut l'utiliser pour chaque fichier, il ne supporte pas *.




______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :
Visiter le site web du posteur Skype
Répondre en citant
Message BATCH ftp problème mget 
Bonjour,

Je te proposes d'aller jeter un coup d'oeil à mon code de mon AdminTool que j'ai fais y'a un petit moment. Tu pourra y accéder via ce lien

Tu as ta réponse dans ce code Okay Je te laisse chercher un peu. @+




______________________________________________________
Une question ? N'hésitez pas à me contacter par Message Privé ou via le topique concerné.
Visiter le site web du posteur
Répondre en citant
Message BATCH ftp problème mget 
Hugo7 a écrit:
j'ai essayé et *D* ça n'existe pas

ça n'existe pas? je veux en faite récupérer tout les fichiers contenant la lettre D dans le nom


@Alons07798, je regarde tout de suite ton code, merci.



Répondre en citant
Message BATCH ftp problème mget 
Avec mon code, tu pourras juste prendre tel et tel programme, donc il faudra que tu passes par une boucle for et tout stocker dans des variables qui seront ensuite download avec mon bout de code.

Sur cette boucle for je ne pourrais pas t'aider Laughing




______________________________________________________
Une question ? N'hésitez pas à me contacter par Message Privé ou via le topique concerné.
Visiter le site web du posteur
Répondre en citant
Message BATCH ftp problème mget 
 Je pense que MGET peux recevoir des Wildcards mais n'ayant pas le temps de tester je te mets une autre solution provisoire :

Tu peux préalablement faire un - LS répertoire fichier.txt - du répertoire pour récuperer la liste des noms de fichier.

Ensuite tu traites cette liste avec un  BAT qui va recréer un fichier de requête FTP avec un GET de
chaque fichier contenant un D.

Code:





@Echo off

::On cree la tête du script (Connexion)
::A toi de mettre les bonnes valeurs

(echo open [url=http://ftp.DOMAIN.com]ftp.DOMAIN.com[/url] 
Echo USER 
Echo PASS) >ftp_script.txt 

::On increment avec un GET de chaque fichier contenant un "d"

for /f "delims=" %%a in ('type fichier.txt ^| find /i "d"') do echo Get %%a >>ftp_Script.txt

::On envoie la requête FTP

ftp -s:D:\S_RECUP\ftp_script.txt -iv







Okay

Dès que j'aurai plus de temps je ferai qqe tests en réel. Je pense que l'on doit pouvoir faire ça en direct.




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message BATCH ftp problème mget 
@Alons07798

J'ai fait ceci en reprenant des bout de ton code

Code:


@echo off
Title AdminTool -- By AlonsO (www.batch.xoo.it)
setLocal EnableDelayedExpansion

:: File Transfert Protocol (FTP)
set FTPSERV=
set USERFTP=
set PASSWORD=
:: FTP: Dossier downloads
set EXEC=/aem/IN

:: USER: Dossier AdminTool
set dossier_admintool=D:\S_RECUP

:: Téléchargement des fichiers
:Download
> ft2.do echo Open %FTPSERV%
>> ft2.do echo %USERFTP%
>> ft2.do echo %PASSWORD%
>> ft2.do echo lcd %dossier_admintool%
>> ft2.do echo cd %EXEC%
>> ft2.do echo mget *.exe
>> ft2.do echo bye
ftp -s:ft2.do
del ft2.do

exit



ça ne change absolument rien, j'ai loupé quelque chose?



Répondre en citant
Message BATCH ftp problème mget 
stan1415 a écrit:
les fichiers contenant la lettre D dans le nom
.

sachadee a écrit:

chaque fichier contenant un D.
Code:
 in ('type fichier.txt ^| find /i "d"') do
 

Sacha je pense que ça va pas, par ce qu'il m'a dit "dans le nom" et ton code regarde dans les fichiers.
En plus on peut pas faire de for à distance, je me trompe?
CMD a écrit:

ftp> for
Commande non valide.

Mais les fichiers contenant "d" sont en ligne, pas sur l'ordi, d'après ce que j'ai compris.

Ceci est pas mal http://cnl.web.arizona.edu/transferprotocols.htm




______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :
Visiter le site web du posteur Skype
Répondre en citant
Message BATCH ftp problème mget 
Alors j'ai du nouveau, un peu mais toujours pas d'explication...
ça fonctionne bien quand il y a un fichier avec un contenant un D sur le serveur

par contre j'ai vraiment besoin que ça fonctionne quand il n'y en a pas donc... la misère
j'ai ouvert en parallèle un ticket chez ovh, je pense que ça vient d'une config du serveur à la base

edit:
je go tester la solution temporaire de sachadee en attendant

@hugo,
je confirme, les fichiers sont en lignes, pas en local. le nom du fichier doit contenir un D, je ne regarde pas à l'intérieur effectivement

Je regarde ton lien



Répondre en citant
Message BATCH ftp problème mget 
^^ Okay




______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :
Visiter le site web du posteur Skype
Répondre en citant
Message BATCH ftp problème mget 
@Hugo7


 
Code:


Sacha je pense que ça va pas, par ce qu'il m'a dit "dans le nom" et ton code regarde dans les fichiers.
En plus on peut pas faire de for à distance, je me trompe?
 


 Effectivement tu te trompes sur toute la ligne


Bon je vais essayer d'être plus clair :

1ére étape :

On récupère sur le serveur un fichier texte contenant tous les fichiers présent.
Pour cela on cree un premier script FTP puis on envoie ce script :


 
Code:


@echo off
(echo open [url=http://ftp.DOMAIN.com]ftp.DOMAIN.com[/url]  
Echo USER  
Echo PASS
Echo LS Nom_du_repertoire_serveur Fichier.txt
Echo Bye) >ftp_script1.txt

:: On envoie les csript

ftp -s:D:\S_RECUP\ftp_script1.txt -iv  



Après cela tu devrait avoir sur ton ordinateur un fichier "Fichier.txt" contenant tous les fichier present dans le répertoire mentionné sur le serveur.

2éme étape :

On test dans ce fichier "Fichier.txt" les nom contenant un "D" et on recree un script FTP avec un GET de ces fichiers :



 
Code:


(echo open [url=http://ftp.DOMAIN.com]ftp.DOMAIN.com[/url]  
Echo USER  
Echo PASS) FTP_script2.txt

::On incremente avec un GET de chaque fichier contenant un "d" 
 
for /f "delims=" %%a in ('type fichier.txt ^| find /i "d"') do echo Get %%a >>ftp_Script2.txt 
 
::On envoie la requête FTP 
 
ftp -s:D:\S_RECUP\ftp_script2.txt -iv  




Tu mets ces 2 codes à la suite dans 1 BAT et tu mets les bon identifiant et le bon nom de répertoire pour la requête FTP .

Wink




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message BATCH ftp problème mget 
sachadee a écrit:

Code:

(echo open [url=http://ftp.DOMAIN.com]ftp.DOMAIN.com[/url] 
Echo USER 
Echo PASS) >ftp_script.txt 

::On increment avec un GET de chaque fichier contenant un "d"

for /f "delims=" %%a in ('type fichier.txt ^| find /i "d"') do echo Get %%a >>ftp_Script.txt

::On envoie la requête FTP

ftp -s:D:\S_RECUP\ftp_script.txt -iv




Je reprends ton code mis juste avant, et je vois pas où est la création de fichier.txt
J'adapte, j'enlèle @echo off, et ça me donne ça


Le code que tu viens de me donner n'est pas le même

Code:
(echo open [url=http://ftp.DOMAIN.com]ftp.DOMAIN.com[/url]   
Echo USER   
Echo PASS
Echo LS Nom_du_repertoire_serveur Fichier.txt
Echo Bye) >ftp_script1.txt





______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :
Visiter le site web du posteur Skype
Répondre en citant
Message BATCH ftp problème mget 
C'est clair que sans LS ça va pas créer de fichier TXT il faut lire le POST Rolling Eyes


 
Citation:


Tu peux préalablement faire un - LS répertoire fichier.txt



Oublie le premier post et concentre toi sur le 2éme il est plus explicite.


Wink




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message BATCH ftp problème mget 
Bon après un ptit moment je l'avoue pour comprendre comment ça marche toussa

J'ai ceci
Code:

:: Création de la liste des fichiers
> tmp_ftp_leroux_mls.txt echo Open %FTPSERV%
>> tmp_ftp_leroux_mls.txt echo %USERFTP%
>> tmp_ftp_leroux_mls.txt echo %PASSWORD%
>> tmp_ftp_leroux_mls.txt echo ls /aem/TEST/ tmp_liste_fic.txt
>> tmp_ftp_leroux_mls.txt echo bye

::On envoie la requête FTP
ftp -s:D:\S_RECUP\tmp_ftp_leroux_mls.txt -iv

:: Récupération des fichiers
> tmp_ftp_leroux_mls_2.txt echo Open %FTPSERV%
>> tmp_ftp_leroux_mls_2.txt echo %USERFTP%
>> tmp_ftp_leroux_mls_2.txt echo %PASSWORD%
>> tmp_ftp_leroux_mls_2.txt echo cd /aem/TEST/
      
::On incremente avec un GET de chaque fichier contenant un "DE"
for /f "delims=" %%a in ('type tmp_liste_fic.txt ^| find /i "DE"') do echo Get %%a >>tmp_ftp_leroux_mls_2.txt

>> tmp_ftp_leroux_mls_2.txt echo bye

::On envoie la requête FTP
ftp -s:D:\S_RECUP\tmp_ftp_leroux_mls_2.txt -iv


et ça fonctionne à priori qu'il y ai ou non des fichiers donc c'est plutôt nice - MERCI POUR VOTRE AIDE Smile

je dois maintenant adapter le script à mes besoins, dans l'ensemble je devrais y arriver dans l'ensemble

J'ai cependant 2 points qui me semblent plus délicats que le reste

- comment éviter le second script si aucun get n'est nécessaire?

- j'ai une vingtaine de dossier à scanner (nombre susceptible d'évoluer avec le temps)
y a t-il possibilité d'adapter le script pour que le ls scan tous les répertoires? et ramène une ligne du genre REP/nom_fic_1.txt etc...?


Je n'ai pour le moment pas chercher de réponse à ces 2 questions donc je n'attends bien sûr pas la solution sur un plateau ^^

Je chercherai demain et si je galère, je demanderai votre aide précieuse Wink

En tout cas merci du coup de main même si ça n'explique pas pourquoi le serveur réagit comme ça

Bonne soirée

Stan



Répondre en citant
Message BATCH ftp problème mget 
Comme quoi...Il faut en mettre un peu du sien   Okay


Pour ton premier problème on peut simplement mettre un switch à 1 si on trouve un GET
sinon il reste a 0.

Donc on envoye la requête FTP si le switch est a 1.

Simple, non ?

Je te mets juste la 2éme partie modifié :
 
Code:



::On incremente avec un GET de chaque fichier contenant un "DE"  
set "$switch=0"
for /f "delims=" %%a in ('type tmp_liste_fic.txt ^| find /i "DE"') do (
   set "$switch=1"
   echo Get %%a >>tmp_ftp_leroux_mls_2.txt)  
 

if %$switch%==1 (

>> tmp_ftp_leroux_mls_2.txt echo bye 
 ::On envoie la requête FTP  
ftp -s:D:\S_RECUP\tmp_ftp_leroux_mls_2.txt -iv
)








______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Message BATCH ftp problème mget 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 2
Aller à la page: 1, 2  >
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch