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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
|
Dim FTPServer,Login,Password,NomDossier,CheminDossier
Copyright = "Folder2FTPUpload © Hackoo © 2012"
Set ws = CreateObject("wscript.Shell")
Temp = ws.ExpandEnvironmentStrings("%Temp%")
'**********Paramètres à modifier*************
FTPServer = "31.170.163.204"
Login = "tonlogin"
Password= "tonpass"
MondossierLocal="e:\Test"
MondossierDistant="dossierdistant"
'****************************************************
Call ContenuDossier(MondossierLocal)
Call FolderFTPUpload(FTPServer,Login,Password,MondossierLocal,MondossierDistant)
'****************************************************
Function FolderFTPUpload(sSite, sUsername,sPassword,sLocalFolder,sRemotePath)
Const OpenAsDefault = -2
Const FailIfNotExist = 0
Const ForReading = 1
Const ForWriting = 2
Set oFTPScriptFSO = CreateObject("Scripting.FileSystemObject")
Set oFTPScriptShell = CreateObject("WScript.Shell")
Set ws = CreateObject("wscript.Shell")
sRemotePath = Trim(sRemotePath)
sLocalFolder = Trim(sLocalFolder)
'Vérifier si le chemin, contient des espaces.
'si Oui,alors nous avons besoin d'ajouter des guillemets pour s'assurer qu'il passe correctement.
If InStr(sRemotePath, " ") > 0 Then
If Left(sRemotePath, 1) <> """" And Right(sRemotePath, 1) <> """" Then
sRemotePath = """"&sRemotePath&""""
End If
End If
If InStr(sLocalFolder, " ") > 0 Then
If Left(sLocalFolder, 1) <> """" And Right(sLocalFolder, 1) <> """" Then
sLocalFolder = """"&sLocalFolder&""""
End If
End If
sFTPTemp = oFTPScriptShell.ExpandEnvironmentStrings("%TEMP%")
Set f = oFTPScriptFSO.OpenTextFile(sFTPTemp &"\ContenuDossier.txt", ForReading, OpenAsDefault)
LireTout = f.ReadAll
Fichier = split(LireTout,VbcrLF)
f.Close
'construire un fichier de configuration pour passer les commandes ftp
sFTPScript = sFTPScript & "USER " & sUsername & vbCRLF
sFTPScript = sFTPScript & sPassword & vbCRLF
'sFTPScript = sFTPScript & "mkdir " & sRemotePath & vbCRLF
sFTPScript = sFTPScript & "cd " & sRemotePath & vbCRLF
sFTPScript = sFTPScript & "binary" & vbCRLF
sFTPScript = sFTPScript & "prompt n" & vbCRLF
For i=LBound(Fichier) to UBound(Fichier)-1
sFTPScript = sFTPScript & "put "& Fichier(i) & vbCRLF
Next
sFTPScript = sFTPScript & "quit" & vbCRLF & "quit" & vbCRLF & "quit" & vbCRLF
sFTPTempFile = sFTPTemp & "\" & oFTPScriptFSO.GetTempName
sFTPResults = sFTPTemp & "\" & oFTPScriptFSO.GetTempName
'Ecrire les commandes ftp à passer dans un fichier temporaire.
Set fFTPScript = oFTPScriptFSO.CreateTextFile(sFTPTempFile, True)
fFTPScript.WriteLine(sFTPScript)
fFTPScript.Close
Set fFTPScript = Nothing
oFTPScriptShell.Run "%comspec% /c FTP -n -s:" & sFTPTempFile & " " & sSite & _
" > " & sFTPResults,0, TRUE
'Vérifier le résultat du Transfert de l'upload
Set fFTPResults = oFTPScriptFSO.OpenTextFile(sFTPResults, ForReading, _
FailIfNotExist, OpenAsDefault)
sResults = fFTPResults.ReadAll
fFTPResults.Close
oFTPScriptFSO.DeleteFile(sFTPTempFile)
'oFTPScriptFSO.DeleteFile(sFTPResults)
ws.run "Notepad " & sFTPResults
'If InStr(sResults,"226") > 0 Then
'FolderFTPUpload = True
'MsgBox "Tout les fichiers contenu dans le Dossier : " &sLocalFolder& vbcr & vbcr & " ont été uploadés avec succés !"&vbcr& LireTout,64,"Résultat du Transfert d'Upload "&Copyright
'ElseIf InStr(sResults, "File not found") > 0 Then
'FolderFTPUpload = "Error: File Not Found"
'MsgBox "Erreur : Fichier Non Trouvé ?",16,"Erreur : Fichier Non Trouvé ? "&Copyright
'ElseIf InStr(sResults, "Login authentication failed") > 0 Then
'FolderFTPUpload = "Error: Login Failed."
'MsgBox "Login authentication a echoué !",16,"Login authentication failed ! "&Copyright
'Else
'FolderFTPUpload = "Error: Unknown."
'MsgBox "Erreur: Inconnu ?",16,"Erreur: Inconnu ? "&Copyright
'End If
Set oFTPScriptFSO = Nothing
Set oFTPScriptShell = Nothing
End Function
sub ContenuDossier(sLocalFolder)
Set ws = CreateObject("wscript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
sFTPTemp = ws.ExpandEnvironmentStrings("%TEMP%")
if fso.FileExists(sFTPTemp &"\ContenuDossier.txt") Then
fso.DeleteFile sFTPTemp &"\ContenuDossier.txt"
End if
Command ="cmd /c for %I in ("&sLocalFolder&"\*.*) do (echo ""%I"") >> "& sFTPTemp &"\ContenuDossier.txt"""
Resultat = ws.run(command,0,True)
End sub
'c'est une fonction très partique qui sert à ajouter "les doubles quotes dans une variable"
Function qq(strIn)
qq = Chr(34) & strIn & Chr(34)
End Function |