IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Vos Contributions VBScript Discussion :

[VBS] Retour d'un UPLOAD FTP [Sources]


Sujet :

Vos Contributions VBScript

  1. #21
    Rédacteur

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 94
    Points : 448
    Points
    448
    Par défaut
    Citation Envoyé par ced600 Voir le message
    que valent FichierCommandeFTP et FichierRetourFTP ?
    Je n'ai pas regarder precisement le chemin de ces deux fichiers.
    Mais j'ai essayer de les mettre a "cmd.ftp" et "return.txt" sans changement.

    Le contenu du fichier commande était oK mais le fichier retour n'était même pas crée.

  2. #22
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    bonsoir,

    tu à précisé un chemin pour la création du fichier return.txt..?

  3. #23
    Rédacteur

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 94
    Points : 448
    Points
    448
    Par défaut
    Citation Envoyé par bbil Voir le message
    bonsoir,

    tu à précisé un chemin pour la création du fichier return.txt..?
    J'ai testé ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FichierRetourFTP = fso.GetSpecialFolder(2).path & "\" & fso.GetTempName
    et ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FichierRetourFTP = "return.txt"

  4. #24
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Je crois que t'on probléme n'est pas VBS mais plutôt le gestionnaire de tache...

    peu-être te faut'il activer l'option "commande interactive".. tu devrai essayer direct la commande ftp .. comme te la dit cedric, et précise bien le chemin complet de tes 2 fichiers au cas ou...

  5. #25
    Rédacteur

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 94
    Points : 448
    Points
    448
    Par défaut
    Citation Envoyé par bbil Voir le message
    Je crois que t'on probléme n'est pas VBS mais plutôt le gestionnaire de tache...

    peu-être te faut'il activer l'option "commande interactive".. tu devrai essayer direct la commande ftp .. comme te la dit cedric, et précise bien le chemin complet de tes 2 fichiers au cas ou...
    Bon pour le moment, je vais deja finir mon script en local car j'ai besoin qu'il tourne rapidement.

    Par la suite, je vais voir pour le basculer sur le reseau.

    Qu'entends tu par "commande interactive" ?

  6. #26
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    une option de AT ... on doit la retrouver dans le planificateur de taches..

    C:\>AT /?
    La commande AT planifie l'exécution des commandes et programmes sur
    l'ordinateur à une date et une heure spécifiées. Le service Planification
    doit fonctionner pour utiliser la commande AT.

    AT [\\ordinateur] [ [id] [/DELETE] | /DELETE [/YES]]
    AT [\\ordinateur] heure [/INTERACTIVE]
    [ /EVERY:date[,...] | /NEXT:date[,...]] "commande"

    \\ordinateur Spécifie un ordinateur distant. Les commandes sont planifiées
    sur l'ordinateur local si ce paramètre est omis.
    id Identificateur (nombre) affecté à une commande
    planifiée.
    /DELETE Supprime une commande planifiée. Si id est omis, toutes
    les commandes sur l'ordinateur sont supprimées.
    /YES Utilisée pour supprimer toutes les tâches sans demande de
    confirmation.
    heure Heure de l'exécution de la commande.
    /INTERACTIVE Permet au travail d'interagir avec le bureau de l'utilisateur
    qui est connecté au moment où le travail est effectué.
    /EVERY:date[,...] Exécute la commande tous les jours spécifiés de la semaine
    ou du mois. Si la date est omise, le jour en cours du mois
    est utilisé par défaut.
    /NEXT:date[,...] Exécute la commande lors de la prochaine occurrence du jour
    (par exemple, jeudi prochain). Si la date est omise, le
    jour en cours du mois est utilisé par défaut.
    "commande" Commande Windows NT, ou programme de commandes à exécuter.

  7. #27
    Rédacteur

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 94
    Points : 448
    Points
    448
    Par défaut
    Citation Envoyé par bbil Voir le message
    une option de AT ... on doit la retrouver dans le planificateur de taches..
    Je vais essayer d'étudier cela

  8. #28
    Membre habitué
    Profil pro
    DevOps
    Inscrit en
    Décembre 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : DevOps

    Informations forums :
    Inscription : Décembre 2008
    Messages : 254
    Points : 144
    Points
    144
    Par défaut
    Bonjour,

    Je voulais avoir une précision sur votre script.

    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If UploadByFTP("test.xls" , "www/pro" , "test.xls")  Then
    	Msgbox "Upload du fichier OK"
    Else
    	Msgbox "probleme"
    End If
    Je voi qu'il y a 2 fois test.xls fichier local et fichier FTP
    Est ce que la fonction compare les 2 fichier pour savoir si le dl c'est bien passé?

    Sinon je développe le même genre de fonction en ce moment
    mais le transfert ne se fait pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
           connect = rep & "commandes.txt"
           Set WshShell = CreateObject("WScript.Shell")
    	retour = rep & "\result.txt"
    	WSHShell.Run "cmd /c ftp.exe -s:" & connect & " > " & retour, 0 , True
    Il me créé bien mon fichier log mais il est vide et rien ne se transfert.
    par contre quand j'utilise juste la commande ftp et non cmd avant le transfert est ok mais dans ce cas pas de fichier log.

    Serait il possible aussi que vous commentiez un peu le code car j'ai du mal a le comprendre, je ne suis pas vraiment débutant mais celui la est peu complexe je trouve.

    Merci d'avance

  9. #29
    Rédacteur

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 94
    Points : 448
    Points
    448
    Par défaut
    Citation Envoyé par tiamat59 Voir le message
    Bonjour,

    Je voulais avoir une précision sur votre script.

    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If UploadByFTP("test.xls" , "www/pro" , "test.xls")  Then
    	Msgbox "Upload du fichier OK"
    Else
    	Msgbox "probleme"
    End If
    Je vois qu'il y a 2 fois test.xls fichier local et fichier FTP
    Est ce que la fonction compare les 2 fichier pour savoir si le dl c'est bien passé?
    En fait, on peut donner un nom différent entre le fichier local et celui du FTP.
    Exemple : Tu veux Uploader un fichier de ton PC qui s'appelle toto.txt mais tu souhaite qu'il se nomme tata.txt sur le FTP.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UploadByFTP "toto.txt" , "www/pro" , "tata.txt"
    Citation Envoyé par tiamat59 Voir le message
    Sinon je développe le même genre de fonction en ce moment
    mais le transfert ne se fait pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
           connect = rep & "commandes.txt"
           Set WshShell = CreateObject("WScript.Shell")
    	retour = rep & "\result.txt"
    	WSHShell.Run "cmd /c ftp.exe -s:" & connect & " > " & retour, 0 , True
    Il me créé bien mon fichier log mais il est vide et rien ne se transfert.
    par contre quand j'utilise juste la commande ftp et non cmd avant le transfert est ok mais dans ce cas pas de fichier log.
    Qu'appelle tu le fichier "log" ? Le fichier de compte rendu FTP ?
    Tu exécute ton script en local sur ton OC ou depuis un répertoire réseau ?

    Citation Envoyé par tiamat59 Voir le message
    Serait il possible aussi que vous commentiez un peu le code car j'ai du mal a le comprendre, je ne suis pas vraiment débutant mais celui la est peu complexe je trouve.

    Merci d'avance
    Effectivement, le code n'est pas très commenté

    Voici quelques petits commentaires :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    Function UploadByFTP(ByVal FichierLocal, ByVal Repertoire, ByVal FichierFTP)
        Const ForReading = 1, ForWriting = 2, ForAppending = 8
        Dim fso, f_cmd, f_ret
     
        ' Initialisation de données de connexions au FTP   
        FTP = "ftp.site.com"
        Login = "mon_login"
        Pass = "mon_mot_de_passe"
     
        Set fso = CreateObject("Scripting.FileSystemObject")
     
        ' Récuperation du nom des fichiers temporaires (Dossier Temp de Windows) 
        FichierCommandeFTP = fso.GetSpecialFolder(2).path & "\" & fso.GetTempName
        FichierRetourFTP = fso.GetSpecialFolder(2).path & "\" & fso.GetTempName
     
        ' Écriture du fichier des commandes FTP 
        Set f_cmd = fso.OpenTextFile(FichierCommandeFTP, ForWriting, True)	
        f_cmd.Write "OPEN " & FTP & vbCrLf
        f_cmd.Write "" & Login & vbCrLf & Pass & vbCrLf
        f_cmd.Write "cd " & Repertoire & vbCrLf
        f_cmd.Write "put " & FichierLocal & " " & FichierFTP & vbCrLf
        f_cmd.Write "quit"
        f_cmd.Close
     
        ' Appel a FTP.exe pour exécution du fichier de commande
        ' L'éxécution créera le fichier de retour
        Set WSHShell = CreateObject("WScript.Shell")	
        WSHShell.Run "cmd /c ftp.exe -s:" & FichierCommandeFTP & " > " & FichierRetourFTP, 0 , True
     
        ' Si le fichier de retour existe
        ' Si inexistant => Probleme d'execution => Retour à False
        UploadByFTP = False
        If fso.FileExists(FichierRetourFTP) Then
            Set f_ret = fso.OpenTextFile(FichierRetourFTP, ForReading)
            ' Parcour du fichier de retour à la recherche de l'indication "Transfert OK"
        	while Not f_ret.AtEndOfStream And UploadByFTP = False
                    ' Si une des lignes commence par "226 ", alors il n'y a pas eu de probleme lors du transfert
        		iF Left(f_ret.ReadLine,4) = "226 " Then
            			UploadByFTP = True
        		End If
            Wend
            f_ret.close
            Set f_ret    = Nothing
            ' Suppression du fichier de retour
            fso.DeleteFile FichierRetourFTP
        End If 
     
        ' Suppression du fichier de commande FTP
        fso.DeleteFile FichierCommandeFTP
     
        Set WSHShell = Nothing
        Set fso      = Nothing
        Set f_cmd    = Nothing
    End Function

  10. #30
    Membre habitué
    Profil pro
    DevOps
    Inscrit en
    Décembre 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : DevOps

    Informations forums :
    Inscription : Décembre 2008
    Messages : 254
    Points : 144
    Points
    144
    Par défaut
    Merci pour ta réponse trés compléte.

    Je vais mettre mon script vous pourrez peu être m'aider car je sui bloquer.

    Voila un code que j'arrive a faire fonctionner
    j'ai mis tous mon code mais ici le principal est la connexion au ftp le reste n'est pas important.
    Donc ce script fonctionne, il envoi simplement un fichier sur le ftp et l'archive.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    'Tester si le fichier de paie est dans le dossier ODPAIE
    rep = "\\serveur\d$\FTP\ODPAIE"
    If (Month(Now) < 10) Then 
    	mois = "0" & Month(Now)
    Else 
    	mois = Month(Now)
    End If
    annee = Year(Now)
    fic = "CONINTCO." & mois & ".smaj"
     
    Set objFSO = CreateObject("Scripting.FileSystemObject" )
    If objFSO.FileExists(rep & "\" & fic) Then 
    	'Le fichier existe, il est renomme avec un nom generique
    	objFSO.MoveFile rep & "\" & fic , rep & "\CONINTCO.smaj"
     
    	'Il est ensuite transfere sur le serveur ASW
    	Set WshShell = CreateObject("WScript.Shell")
    	WSHShell.Run "ftp.exe -n -s:commandes.txt"
     
    	'Créaton du dossier d'archivage
    	If Not objFSO.FolderExists(rep & "\" & annee) Then
    		objFSO.CreateFolder(rep & "\" & annee) 
    	End If	
    	'le deplacement ds l'archive est faite ds un autre script qui sera planifié quelque seconde plus tard
    End If
    Ce que je voudrait faire c'est un test pour voir si le fichier a bien été transférer et si il y a un problème sur le transfert ne pas l'archiver et envoyer un mail.
    Pour cela je voulait donc récupérer le résultat de la connexion dans un fichier log pour pouvoir le traiter par la suite.

    Et voici l'autre code qui ne fonctionne pas, j'ai pourtant bien respecter la synthaxe (enfin je pense) au niveau de la connexion ftp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    'Tester si le fichier de paie est dans le dossier ODPAIE
    rep = "\\serveur\d$\FTP\ODPAIE"
    If (Month(Now) < 10) Then 
    	mois = "0" & Month(Now)
    Else 
    	mois = Month(Now)
    End If
    annee = Year(Now)
    fic = "CONINTCO." & mois & ".smaj"
    connect = rep & "commandes.txt"
     
    Set objFSO = CreateObject("Scripting.FileSystemObject" )
    If objFSO.FileExists(rep & "\" & fic) Then 
    	'Le fichier existe, il est renomme avec un nom generique
    	objFSO.MoveFile rep & "\" & fic , rep & "\CONINTCO.smaj"
     
    	'Il est ensuite transfere sur le serveur ASW
    	Set WshShell = CreateObject("WScript.Shell")
    	retour = rep & "\result.txt"
    	connect = rep & "commandes.txt"
    	WSHShell.Run "cmd /c ftp.exe -s:" & connect & " > " & retour, 0 , True
     
    	'Créaton du dossier d'archivage
    	If Not objFSO.FolderExists(rep & "\" & annee) Then
    		objFSO.CreateFolder(rep & "\" & annee) 
    	End If	
    	'le deplacement ds l'archive est faite ds un autre script qui sera planifié quelque seconde plus tard
    End If
    Mais dans ce cas le transfert ne se fait pas, le fichier result.txt se crée bien mais il est vide.

    Pourriez vous m'aider?

  11. #31
    Membre habitué
    Profil pro
    DevOps
    Inscrit en
    Décembre 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : DevOps

    Informations forums :
    Inscription : Décembre 2008
    Messages : 254
    Points : 144
    Points
    144
    Par défaut
    Bonj'ai un peu avancé depuis mon dernier post.

    Mes script était stocké sur un serveur et c'est surment pour cela qu'i lne s"exécutait pas bien puisque j'était en partage administratif.
    De plus j'ai modifier ma variable rep en mettant le chemin relatif (juste \test)
    J'ai ensuite fait une copi en local des mes script et la miracle ça marche
    Le transfert et le fichier résult sont OK

    Par contre j'ai donc essayer de remttre mes script sur le serveur et de prendre la main en TSE dessus pour aller les exécuter mais la rien, mais alors rien de chez rien, j'ai l'impression qu'il ne s'execute pas du tous. Pourtant en étant connecté en TSE sa devrait revenir au même que quand j'exécute les autres en local.

    Quelqu'un aurai une idée?

Discussions similaires

  1. Réponses: 19
    Dernier message: 20/04/2014, 03h19
  2. [VBS] Upload FTP
    Par kevain_09 dans le forum VBScript
    Réponses: 6
    Dernier message: 23/12/2006, 13h45
  3. [Upload] Upload ftp free
    Par joquetino dans le forum Langage
    Réponses: 9
    Dernier message: 09/10/2005, 02h28
  4. [Image]Vérifier taille image lors d'upload FTP
    Par MiJack dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 10/09/2004, 01h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo