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

VBScript Discussion :

Modifier répertoire courant pour envoi FTP


Sujet :

VBScript

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Par défaut Modifier répertoire courant pour envoi FTP
    Bonjour,

    J'ai un script dont la fonctionnalité est la suivante :

    1°) Je vérifie si le processus "ftp.exe" tourne sur le serveur. Si elle tourne, je tue le processus car autrement cela plante ma tâche planifiée.
    2°) Je transfert des fichiers via ftp par une commande Windows cmd /c à l'aide d'un fichier de commande FTP et j'envoie le résultat dans un fichier log.
    3°) Je copie les fichiers transférés dans un autre dossier (Lorsque mon problème FTP sera résolu, je déplacerai les fichiers au lieu de les copier).

    Voici le code
    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
     
    set objWMIService = GetObject ("winmgmts:")
    foundProc = False
    procName = "ftp.exe"
     
    for each Process in objWMIService.InstancesOf ("Win32_Process")
        If StrComp(Process.Name,procName,vbTextCompare) = 0 then
            foundProc = True
            procID = Process.ProcessId
        End If
    Next
    If foundProc = True Then
     
        Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process where ProcessId =" &  procID)
        For Each objProcess in colProcessList    
            objProcess.Terminate()
        Next
        WScript.Sleep(1000) 'Pause avant de relancer le check processus
        Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process where ProcessId =" &  procID)
        If colProcessList.count = 0 Then
    	FichierCommandeFTP = "D:\FTP\ftptransf_Test.ftp"
        	FichierLogFTP = "D:\FTP\ftp_Test.log"
            Set WSHShell = CreateObject("WScript.Shell")
    	WSHShell.CurrentDirectory = "D:\FTP"
        	WSHShell.Run "cmd /c ftp.exe -in -s:" & FichierCommandeFTP & " >> " & FichierLogFTP, 0 , True
    		Dim FSO
    		Set FSO = CreateObject("Scripting.FileSystemObject")
    		FSO.CopyFile "D:\FTP\Test\*.txt", "D:\FTP\old\Test"
    		'FSO.CopyFile "D:\FTP\Envoi\AFD_BL\*.csv", "D:\FTP\old\AFD_BL"
    		'FSO.CopyFile "D:\FTP\Envoi\AFD_FAC\*.csv", "D:\FTP\old\AFD_FAC"
        End If
    End If
    WScript.quit
    J'ai testé la commande cmd /c ftp.exe -in -s:FichierCommandeFTP >> FichierLogFTP toute seule et elle ne fonctionne que lorsque le promt est sur "D:\FTP".
    Donc mon problème est de modifier le répertoire courant avant de lancer la commande cmd /c ftp.exe.

    Merci pour votre aide.

  2. #2
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut

    Est-ce que cette ligne passe chez-vous ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FSO.CopyFile "D:\FTP\Test\*.txt", "D:\FTP\old\Test"

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Par défaut
    Bonjour,

    Oui, les fichiers sont bien copiés.

  4. #4
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut

    Essaies de commenter cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WSHShell.CurrentDirectory = "D:\FTP"
    puis remplaces cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WSHShell.Run "cmd /c ftp.exe -in -s:" & FichierCommandeFTP & " >> " & FichierLogFTP, 0 , True
    par celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WSHShell.Run "cmd /c ftp.exe -s:" & FichierCommandeFTP & " >> " & FichierLogFTP, 0 , True
    puis tester

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Par défaut
    Cela ne fonctionne toujours pas.

    Par contre en commande Windows lorsque j'entre je reste sur le current directory de base. Il faut que je fasse et là j'ai bien le prompt

  6. #6
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut
    Il y a quoi comme fichiers dans D:\FTP ?
    il y a un fichier FTP.exe dans D:\FTP ?

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Par défaut
    Dans le dossier D:\FTP il y a les 2 fichiers ftptranf_Test.ftp (ligne 21) et ftp_Test.log (ligne 22) qui font partis de la commande ligne 25 du script.
    Il n'y a pas de ftp.exe.

  8. #8
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut
    Testez cette fonction en tenant compte de vos paramètres ==> FTP sous VBS pour test débit avec affichage du résultat

  9. #9
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Par défaut
    Je n'ai pas testé le script par contre la commande Windows pour changer le répertoire courant en une seule fois est .

    Il doit être possible de lancer 2 commandes Windows à la suite : Une pour changer le répertoire courant + Une pour lancer le FTP

  10. #10
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut
    Citation Envoyé par ghostvb Voir le message
    Cela ne fonctionne toujours pas.
    Par contre en commande Windows lorsque j'entre je reste sur le current directory de base. Il faut que je fasse et là j'ai bien le prompt

    Ou bien ceci doit-être fonctionner
    Donc on peut faire ceci et c'est à vous de tester si ça marche ou non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WSHShell.Run "cmd /c CD /D d:\FTP & ftp.exe -i -n -s:" & FichierCommandeFTP & " >> " & FichierLogFTP, 0 , True
    ou bien aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WSHShell.Run "cmd /c D: & CD d:\FTP & ftp.exe -i -n -s:" & FichierCommandeFTP & " >> " & FichierLogFTP, 0 , True

  11. #11
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Par défaut
    J'ai essayé les 2 versions mais sans succès.

    Je vais peut-être tout simplement lancer un script cmd depuis vbscript.

  12. #12
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    WSHShell.CurrentDirectory = "D:\FTP"
    Je ne pense pas que ça pose un problème : c'est tout à fait opérationnel même le point de départ se trouve en c: ou ailleurs.

    Je propose que vous fournissez le parcours absolu pour ftp.exe pour tester. Et aussi, laissez la console apparue pour inspecter un peu plus près au premier temps (le deuxième argument étant 1 au lieu de 0 pour le cacher dans la méthode run()).

  13. #13
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    On est un peu dans le vague, il se peut que ce soit le contenu du fichier FichierCommandeFTP qui en est la cause.

    Mais au fait, peut-on voir (une partie de ou) son contenu.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  14. #14
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    En relisant ton code, j'ai remarqué la ligne 20 If colProcessList.count = 0 Then .
    Or cette condition est vrai. Le traitement devrait se faire jusqu'à la ligne 25 où la condition devient fausse.
    Les lignes 27 et 28 ne seront donc jamais exécutées. C'est pour cela que la copie ne se fait pas.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/03/2009, 22h07
  2. modifier le DocumentRoot pour un répertoire
    Par talvins dans le forum Apache
    Réponses: 3
    Dernier message: 12/08/2008, 12h40
  3. Modifier la police pour l'envoi d'email
    Par tahiti17000 dans le forum VBA Access
    Réponses: 2
    Dernier message: 08/08/2007, 21h09
  4. Répertoire courant pour une DLL
    Par jaduta dans le forum Delphi
    Réponses: 2
    Dernier message: 02/04/2007, 09h10
  5. répertoire courant ".\"
    Par tut dans le forum MFC
    Réponses: 2
    Dernier message: 10/03/2004, 09h57

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