Execution FTP pui Redirection du processus vers un fichier TXT

Résolu
Steeve Le Provost Messages postés 32 Date d'inscription vendredi 12 août 2005 Statut Membre Dernière intervention 17 juillet 2007 - 17 juil. 2007 à 12:30
Steeve Le Provost Messages postés 32 Date d'inscription vendredi 12 août 2005 Statut Membre Dernière intervention 17 juillet 2007 - 17 juil. 2007 à 17:21
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

Steeve Le Provost Messages postés 32 Date d'inscription vendredi 12 août 2005 Statut Membre Dernière intervention 17 juillet 2007
17 juil. 2007 à 16:56
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
3
Steeve Le Provost Messages postés 32 Date d'inscription vendredi 12 août 2005 Statut Membre Dernière intervention 17 juillet 2007
17 juil. 2007 à 17:21
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
3
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
17 juil. 2007 à 13:40
 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
0
Steeve Le Provost Messages postés 32 Date d'inscription vendredi 12 août 2005 Statut Membre Dernière intervention 17 juillet 2007
17 juil. 2007 à 14:19
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
17 juil. 2007 à 14:42
un Sleep ? me semble pô

je te redirigerai également vers le StdOut, perso....
0
Steeve Le Provost Messages postés 32 Date d'inscription vendredi 12 août 2005 Statut Membre Dernière intervention 17 juillet 2007
17 juil. 2007 à 14:47
Alors dans ce cas, coment utiliser StdOut avec la commande Run ?

Steeve Le Provost
http://www.steeve-leprovost.fr.cx
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
17 juil. 2007 à 15:16
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
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
17 juil. 2007 à 17:03
>+

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
0
Rejoignez-nous