' 24 juillet 2014 ' rajout dans les 2 fonctions ConnectLecteurReseauFtp... du test f: existe Option Explicit Dim strComputer, objWMIService, colItems, objItem Dim objWMI, objItems, id Dim PathFileResult PathFileResult="c:\temp\xftpDirResult.txt" Dim PathFileFtpArg PathFileFtpArg="c:\temp\empty.txt" ' force l'execution du script, même si défaut On error resume next Wscript.Echo "xftp :" 'connexion au serveur ftp et transfert le dossier le plus récent Function ConnectLecteurReseauFtpWithLast() Dim objOutStream, objFile, objFSO, objShell, dirFSO Dim ftpHost, idCond, cmd2Exec, localDir Const ForWriting = 2 ' Wscript.echo "ConnectLecteurReseauFtpWithLast" '240714 : rajout Dim dirServeurFSO, serveurDir Set dirServeurFSO = CreateObject("Scripting.FileSystemObject") serveurDir = "f:" If dirServeurFSO.DriveExists(serveurDir) Then Wscript.echo "drive f:" Else Wscript.echo "f: do not exist" Wscript.quit'ne rien faire End If Err.clear ' 'lecture lecteur réseau ftp Set objShell = CreateObject("WScript.Shell") ' cmd2Exec = "%comspec% /c dir f: /A:D /O:-D /T:C /B > c:\temp\xftpDirResult.txt" cmd2Exec = "%comspec% /c dir f: /A:D /O:-D /T:C /B > " & PathFileResult Wscript.echo cmd2exec objShell.Run cmd2Exec,0,True 'lecture fichier pour récupérer le dernier idCond Set objFSO = CreateObject("Scripting.FileSystemObject") ' Set objFile = objFSO.OpenTextFile("c:\temp\xftpDirResult.txt",1) Set objFile = objFSO.OpenTextFile(PathFileResult,1) '1ere ligne du fichier idCond=Cint(objFile.ReadLine) ' Wscript.echo idCond objFile.Close ''''' CREER LE REPERTOIRE EN LOCAL SI N'EXISTE PAS ''''' Set dirFSO = CreateObject("Scripting.FileSystemObject") localDir = "c:/temp/"&idCond If Not dirFSO.FolderExists(localDir) Then dirFSO.CreateFolder localDir End If 'accès ftp ftpHost = "172.16.1.19" ' Set objOutStream = objFSO.OpenTextFile("C:\temp\"&idCond&"\empty.txt", ForWriting, True) Set objOutStream = objFSO.OpenTextFile(PathFileFtpArg, ForWriting, True) With objOutStream .WriteLine "USER moi" ' utilisateur .WriteLine "PASS toi" ' mdp .WriteLine "ascii" .WriteLine "prompt off" .writeLine "cd "&"temp/json/"&idCond ' il faut aller les chercher dans ce repertoire .WriteLine "lcd "&"c:/temp/"&idCond ' il faut les copier dans ce repertoire .WriteLine "mget *" ' recupere et redate .WriteLine "bye" .Close End With objOutStream.Close 'Set objShell = CreateObject("WScript.Shell") ' cmd2Exec = "%comspec% /c FTP -s:" & "C:\temp\"&idCond&"\empty.txt" & " " & ftpHost cmd2Exec = "%comspec% /c FTP -s:" & PathFileFtpArg & " " & ftpHost Wscript.echo cmd2exec objShell.Run cmd2Exec,0,True ConnectLecteurReseauFtpWithLast=idCond'on retourne la valeur de idCond Wscript.Echo End Function 'connexion au serveur ftp et transfert le dossier sélectionné Sub ConnectLecteurReseauFtpWithId(byval id) Dim objOutStream, objFSO, objShell, dirFSO Dim ftpHost, cmd2Exec, localDir Const ForWriting = 2 ' Wscript.echo "ConnectLecteurReseauFtpWithId" '240714 : rajout Dim dirServeurFSO, serveurDir Set dirServeurFSO = CreateObject("Scripting.FileSystemObject") serveurDir = "f:" If dirServeurFSO.DriveExists(serveurDir) Then Wscript.echo "drive f:" Else Wscript.echo "f: do not exist" Wscript.quit'ne rien faire End If Err.clear ' ''''' CREER LE REPERTOIRE EN LOCAL SI N'EXISTE PAS ''''' Set dirFSO = CreateObject("Scripting.FileSystemObject") localDir = "c:/temp/"&id If Not dirFSO.FolderExists(localDir) Then dirFSO.CreateFolder localDir End If 'accès ftp ftpHost = "172.16.1.19" Set objFSO = CreateObject("Scripting.FileSystemObject") ' Set objOutStream = objFSO.OpenTextFile("C:\temp\"&id&"\empty.txt", ForWriting, True) Set objOutStream = objFSO.OpenTextFile(PathFileFtpArg, ForWriting, True) With objOutStream .WriteLine "USER moi" ' USERNAME .WriteLine "PASS toi" ' Password .WriteLine "ascii" .WriteLine "prompt off" .writeLine "cd "&"temp/json/"&id .WriteLine "lcd "&"c:/temp/"&id ' FOLDER I'm changing into .WriteLine "mget *" ' Get all files with today's date in it .WriteLine "bye" .Close End With Set objShell = CreateObject("WScript.Shell") ' cmd2Exec = "%comspec% /c FTP -s:" & "C:\temp\"&id&"\empty.txt" & " " & ftpHost cmd2Exec = "%comspec% /c FTP -s:" & PathFileFtpArg & " " & ftpHost Wscript.echo cmd2exec objShell.Run cmd2Exec,0,True Wscript.Echo End Sub 'Copies sur la borne si w: existe Sub CopieBorne(byval id) Dim dirBorneFSO, objShell Dim cmd2Exec, borneDir Wscript.echo "CopieBorne" Set dirBorneFSO = CreateObject("Scripting.FileSystemObject") borneDir = "w:" If dirBorneFSO.DriveExists(borneDir) Then Wscript.echo "drive w:" Set objShell = CreateObject("WScript.Shell") Wscript.echo "copy xftp.." cmd2Exec = "%comspec% /c copy /Y c:\temp\xftp.txt w:" Wscript.echo cmd2exec objShell.Run cmd2Exec,0,True Wscript.echo "create directory w:\"&id&"" cmd2Exec = "%comspec% /c mkdir w:\"&id&"" Wscript.echo cmd2exec objShell.Run cmd2Exec,0,True Wscript.echo "error" & " Description:" & Err.Description Wscript.echo "copy into repertory w:\"&id&"" cmd2Exec = "%comspec% /c copy /Y c:\temp\"&id&"\* w:\"&id&"" Wscript.echo cmd2exec objShell.Run cmd2Exec,0,True Else Wscript.echo "w: do not exist" End If Err.clear Wscript.Echo End Sub 'recupere la date strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_LocalTime") For Each objItem in colItems Wscript.Echo "" &objItem.Day,"-","" &objItem.Month,"-","" &objItem.Year,_ ",","" &objItem.Hour,":","" &objItem.Minute,":","" &objItem.Second Next 'recuperer les adresses ip Set objWMI = getobject("winmgmts:") set objItems = objWMI.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True") For Each objItem In objItems 'Wscript.Echo objItem.IPAddress(0) If Left(objItem.IPAddress(0),3) = "172" Then Wscript.Echo objItem.IPAddress(0), " : ...CONNECTION TO FTP SERVER..." If WScript.Arguments.Length >0 Then Wscript.echo "id conditionning= "&WScript.Arguments(0),"... transfering the selected repertory"'parametre id conditionning ' idCond = WScript.Arguments(0) ConnectLecteurReseauFtpWithId(WScript.Arguments(0)) CopieBorne(WScript.Arguments(0)) exit for'une seule fois suffit !! Else Wscript.echo "No id conditionning specified... transfering the most recent repertory" id=ConnectLecteurReseauFtpWithLast() CopieBorne(id) exit for'une seule fois suffit !! End If ' Select Case Left(objItem.IPAddress(0),8) ' Case "172.XX.X" ' 'instructions ' Case "172.XX.X" ' 'instructions ' End Select End If If Left(objItem.IPAddress(0),3) = "134" Then Wscript.Echo objItem.IPAddress(0), " : ...NO CONNECTION TO FTP SERVER..." 'ne fait rien Wscript.Echo Wscript.quit End If Next Set objItem = Nothing Set objItems = Nothing Set objWMI = Nothing Wscript.quit