Execution FTP pui Redirection du processus vers un fichier TXT

[Résolu]
Signaler
Messages postés
32
Date d'inscription
vendredi 12 août 2005
Statut
Membre
Dernière intervention
17 juillet 2007
-
Messages postés
32
Date d'inscription
vendredi 12 août 2005
Statut
Membre
Dernière intervention
17 juillet 2007
-
Bonjour,

Voilà, j'ai besoin de votre aide concernant le lancement d'une commande FTP en vbScript, je m'explique...

Voila ce que j'ai actuellement :

Set

uploader_FTP = CreateObject(
"WScript.Shell")
uploader_FTP.Run

"ftp -s:C:\blabla\FTP_Param.txt XXX.XXX.X.X", 0,
TRUEOnLog(

"FTP Transfert done")

Set uploader_FTP =
Nothing

J'ai réalisé une méthode spécifique pour créer un fichier de log avec appel de "OnLog()"

Ce que je souhaite, c'est tout simplement effectuer une redirection du déroulement de cette commande FTP vers un fichier txt (Si j'arrive a faire une redirection du déroulement de cette commande dans un fichier txt, je pourrais l'exploiter dans ma méthode OnLog).

En créant un fichier bat, j'arrive à rediriger le déroulement de cette commande dans un fichier texte dont voici le détail :

Fichier bat :
ftp -s:C:\blabla\FTP_Param.txt XXX.XXX.X.X> "C:\blabla\ftp.txt"

Fichier ftp.txt généré :
Connected to XXX.XXX.X.X.220 Microsoft FTP Service
User (XXX.XXX.X.X:(none)):
331 Password required for Steeve Le Provost.

230 User Steeve Le Provost logged in.
ftp> Interactive mode Off .

ftp> prompt
Local directory now C:\blabla.

ftp> lcd "C:\blabla\transfert"
cd test
250 CWD command successful.
ftp> mput *.exe
200 PORT command successful.
150 Opening ASCII mode data connection for File.exe.
226 Transfer complete.
ftp: 60 bytes sent in 0.00Seconds 60000.00Kbytes/sec.

ftp> quit
221 

Voila, ce que je souhaite est comme vous l'aurez compris de retrouver par la suite ce fichier ftp.txt dans mon log pour pouvoir réaliser ma gestion d'erreur correctement, j'ai bien essayé de saisir la meme commande dans mon Script vbs que dans le fichier bat avec le pipe de redirection mais rien n'y fait, vbs ne veut rien savoir...Je ne veux pas utiliser de fichier bat, uniquement au sein de mon script avec la méthode Run.

J'attend vos réponses ou vos suggestions si vous en avez...

Merci d'avance pour votre aide,

Cordialement,

Steeve Le Provost
http://www.steeve-leprovost.fr.cx

8 réponses

Messages postés
32
Date d'inscription
vendredi 12 août 2005
Statut
Membre
Dernière intervention
17 juillet 2007

Bon......Je viens de réussir à utiliser la redirection vers mon fichier de log...et avec la commande que je souhaitais utiliser, à savoir Run.

Si cela peut aider quelqu'un, leproblème ne se situait qu'au niveau du début de la commande FTP :

AVANT
Set uploader_FTP = CreateObject(
"WScript.Shell")

uploader_FTP.Run "ftp -s:C:\blabla\FTP_Param.txt XXX.XXX.X.X", 0,
TRUE

OnLog("FTP Transfert done")

Set uploader_FTP =
Nothing

APRES

Set uploader_FTP = CreateObject("WScript.Shell")

uploader_FTP.Run "%comspec% /c ftp -s:C:\blabla\FTP_Param.txt XXX.XXX.X.X > ""C:\blabla\essai.txt""", 0, TRUE

OnLog("FTP Transfert done")

Setuploader_FTP= Nothing

Voilà,  maintenant que ma redirection est effectuée ca devrait etre a priori fonctionnel...Mais j'ai un dernier problème...j'ai déjà des infos dans mon fichier essai.txt car le programme a mis des log dedans depuis le début de l'éxécution du script. Et lorsque je fait la redirection, il m'écrase le fichier pour le recréer...Donc je voudrais savoir si il est possible d'effectuer une redirection sur un fichier et d'ouvrir ce fichier en mode APPEND pour se situer à la fin et en ajout de données uniquement...

Merci à tous pour vos réponses...

Cordialement,

Steeve Le Provost
http://www.steeve-leprovost.fr.cx
Messages postés
32
Date d'inscription
vendredi 12 août 2005
Statut
Membre
Dernière intervention
17 juillet 2007

Et bien voila, je vais faire question réponse concernant mon dernier post...

Pour ceux qui souhaiterais savoir comment rediriger vers un fichier texte en mode APPEND, et bien c'est tout simplement avec ces caractères : >>au lieu de >

Set uploader_FTP = CreateObject("WScript.Shell")

uploader_FTP.Run "%comspec% /c ftp -s:C:\blabla\FTP_Param.txt XXX.XXX.X.X >> ""C:\blabla\essai.txt""
", 0, TRUE

OnLog("FTP Transfert done")

Set uploader_FTP = Nothing

Merci à tous pour votre aide...

Steeve Le Provost

http://www.steeve-leprovost.fr.cx
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 Bonjour

Ci-dessous deux exemples pour rediriger une sortie:

1)
 Option Explicit

 Dim WshShell,obj,Command,Result,Temp,FileName,File
 Set obj = WScript.CreateObject("Scripting.FileSystemObject")
 Set WshShell=WScript.CreateObject("WScript.Shell")
 FileName=GetTempFile("command.txt")

 Result = Ping()

 Function Ping()

 Command = "%COMSPEC% /C ipconfig.exe /all > %TEMP%\command.txt"
 Result = WshShell.Run(Command,0,True)
 Temp = obj.GetSpecialFolder(2).Path
 Set File = obj.OpenTextFile(FileName)
 Ping = file.ReadAll
 file.Close
 obj.DeleteFile FileName,True

 End Function

 Function GetTempFile(File)
 GetTempFile=WshShell.ExpandEnvironmentStrings("%TEMP%") & "" & File
 End Function

 MsgBox(Result)

2)
Option Explicit
Dim strListe, cpt
Call fnUsersConnected()
WScript.Echo "Utilisateurs connectés (" & cpt & ")" &vbCrLf& strListe

Function fnUsersConnected()
Dim objShell, objScriptExec
Dim arrTabUsers,  i
Set objShell = CreateObject("WScript.Shell")
Set objScriptExec = objShell.Exec("net view")

arrTabUsers = Filter(Split(LCase(objScriptExec.StdOut.ReadAll),vbCrLf),"\")

For i=0 To UBound(arrTabUsers)
    arrTabUsers(i) = Split(arrTabUsers(i)," ")
    strListe = strListe &vbCrLf& Replace(arrTabUsers(i)(0),"\","")
    cpt = cpt + 1
Next
fnUsersConnected = strListe & cpt
Set objShell = Nothing
Set objScriptExec = Nothing
End Function

La propriété StdOut de l'objet WScript devrait correspondre à votre attente.

jean-marc
Messages postés
32
Date d'inscription
vendredi 12 août 2005
Statut
Membre
Dernière intervention
17 juillet 2007

Bonjour,

Merci pour cette réponse mais je ne souhaite pas utiliser la méthode Exec, celle-ci requiert un Sleep et je ne veux pas en faire car cela ne prouve pas que le fichier à été copié sur le FTP. La méthode Run elle possède un argument permettant de lui indiquer de ne passer à la ligne suivante qu'après execution du transfert FTP. Y a t'il un équivalenent pour StdOut car cette méthode ne fonctionne pas avec...

Merci malgré tout

Steeve Le Provost
http://www.steeve-leprovost.fr.cx
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
un Sleep ? me semble pô

je te redirigerai également vers le StdOut, perso....
Messages postés
32
Date d'inscription
vendredi 12 août 2005
Statut
Membre
Dernière intervention
17 juillet 2007

Alors dans ce cas, coment utiliser StdOut avec la commande Run ?

Steeve Le Provost
http://www.steeve-leprovost.fr.cx
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
Re,

Ces 2 liens pourraient être intéressant
http://www.visualbasicscript.com/m_28937/tm.htm

et
http://www.example-code.com/vbscript/ftp.asp

jean-marc
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
>+

je crois (a lire dans la doc MsDos)


.Exec est Asynchrone, il rend la main illico. a toi de boucler tant que son status indique qu'il est occupé...
ce qu'indique le premier lien fournis par JMO

me semble qu'en passant par .Exec, tu pourrais piloter la console (et donc FTP.exe) via StdOut et StdIn, t'evitant d'utiliser un fichier texte