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 :

Test et suppression d'un fichier distant


Sujet :

VBScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 18
    Points : 9
    Points
    9
    Par défaut Test et suppression d'un fichier distant
    Bonjour,

    Je recherche comment modifier le script ci-dessous afin de tester l'existence d'un fichier sur le serveur distant avant de faire un upload. Le script ci-dessous fait un CopyHere mais n'effectue pas un test préalable. L'idée est de supprimer le fichier distant, s'il existe avant de faire un upload.
    Merci d'avance,
    Tony

    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
    FTPUser = "user"
    FTPPass = "pwd"
    FTPHost = "serveurdistant.fr"
    FTPDir = "/home/user"
     
    strFTP = "ftp://" & FTPUser & ":" & FTPPass & "@" & FTPHost & FTPDir
    Set objFTP = oShell.NameSpace(strFTP)
    If objFSO.FileExists(fichier) Then
    	Set objFile = objFSO.getFile(fichier)
    	strParent = objFile.ParentFolder
    	Set objFolder = oShell.NameSpace(strParent)
    	Set objItem = objFolder.ParseName(objFile.Name)
     
            if objFTP.FileExists(objFTP.objItem.Name) then
    	   objFTP.DeleteFile objItem.Name
    	   objFTP.CopyHere objItem, copyType
          else 
             objFTP.CopyHere objItem, copyType
          End If
    End If

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut

    Voici un petit aperçu global pour vous montrer comment il faut y prendre les choses en main
    Pour lister des fichiers distants on peut utiliser un batch qui interagit avec le ftp en ligne de commande
    Par exemple, Vous pouvez exécuter le FTP.exe en deux phases.


    1. 1ère exécution du FTP.exe pour lister le répertoire distant et sauvegarder la liste dans un fichier texte.Ensuite, vous traitez localement la liste pour préparer à supprimer ce fichier.
    2. Et puis vous relancez le FTP.exe pour le supprimer à distance.

    Donc je vous laisse travailler un peu et

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut

    Voici un exemple pondu et testé sur le serveur FTP de Microsoft pour tester l'existence ou non d'un fichier
    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
    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
    Option Explicit
    '*********************Paramètres de Connexion FTP***********************
    Dim FTPSERVER,USER,PASSWORD,RemoteFolder
    FTPSERVER = "ftp.microsoft.com"
    USER = "anonymous"
    PASSWORD = "anonymous@anonymous.com"
    RemoteFolder = "Softlib" 'un dossier du FTP
    '***********************************************************************
    Call Lister_Fichiers_FTP(FTPSERVER,USER,PASSWORD,RemoteFolder)
    Dim Titre,SearchFile,ListFiles
    Titre = "Test d'existence d'un fichier sur un serveur FTP : " & DblQuote(FTPSERVER) & " by Hackoo 2015"
    SearchFile = "index.txt"
    ListFiles = "TLIST.txt"
    If Found(SearchFile,ListFiles) = True Then
        MsgBox "Le fichier "& DblQuote(SearchFile) & " existes dans le dossier " & DblQuote(RemoteFolder) &_
        " du serveur FTP " & DblQuote(FTPSERVER),vbInformation+vbSystemModal,Titre
    Else
        MsgBox "Le fichier "& DblQuote(SearchFile) & " n'existes pas dans le dossier " & DblQuote(RemoteFolder) &_
        " du serveur FTP " & DblQuote(FTPSERVER),vbCritical+vbSystemModal,Titre
    End If
    '***********************************************************************
    Sub Lister_Fichiers_FTP(FTPSERVER,USER,PASSWORD,RemoteFolder)
        Dim fso,ws,output,ScriptFTP,Temp
        Set ws = CreateObject("WScript.Shell")
        Temp = ws.ExpandEnvironmentStrings("%Temp%")
        Set fso = CreateObject("Scripting.FileSystemObject")
        ScriptFTP = Temp & "\ftp.txt"
        Set output = fso.CreateTextFile(Temp & "\ftp.txt",True)
        output.WriteLine "open "& FTPSERVER
        output.WriteLine USER
        output.WriteLine PASSWORD
        output.WriteLine "CD " & RemoteFolder
        output.WriteLine "ls -h TLIST.txt"
        output.WriteLine "bye"
        output.Close
        ws.Run "%comspec% /c ftp -s:"& ScriptFTP &"",0,True
        fso.DeleteFile ScriptFTP
        set ws = Nothing
        set fso = Nothing
        set output = Nothing
    End Sub
    '***********************************************************************
    Function Found(MyString,File)
        Dim objRegExpr,FSO,TF,inp,MyFile,colMatches
        Found = False
        Set objRegExpr = New regexp
        objRegExpr.Pattern = MyString
        objRegExpr.Global = True
        Set FSO=CreateObject("Scripting.FileSystemObject")
        Set TF=FSO.OpenTextFile(File,1)
        colMatches = 0
        inp=TF.ReadAll
        Set colMatches = objRegExpr.Execute(inp)
        If ColMatches.count = 1 then
            Found = True
        Else
            Found = False
        End if    
        Set colMatches = Nothing
        Set objRegExpr = Nothing
    End Function
    '***********************************************************************
    Function DblQuote(Str)
        DblQuote = Chr(34) & Str & Chr(34)
    End Function
    '***********************************************************************

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Merci pour cette réponse.
    Je vous tiendrais informer quand j'aurais fait des tests.
    Tony

  5. #5
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut
    Citation Envoyé par Tonyfr Voir le message
    Merci pour cette réponse.
    Je vous tiendrais informer quand j'aurais fait des tests.
    Tony
    Test de quoi ? surtout ne supprimez pas les fichiers de microsoft

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    A l'exécution la ligne fso.DeleteFile ScriptFTP génère un message d'erreur code 800A0046 qui correspond au problème de droit sur le répertoire et sur le fichier ; alors que l'utilisateur a les droits d'écriture sur les fichiers qu'il a lui même crée.
    Le fichier ftp.txt est crée et contient les infos. de connexion au serveur ftp, mais le fichier TLIST.txt est vide.

Discussions similaires

  1. Suppression d'un fichier distant
    Par maloue dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/01/2013, 09h49
  2. Suppression d'un fichier sur FTP distant
    Par pilipi dans le forum Windows Forms
    Réponses: 2
    Dernier message: 28/05/2009, 12h18
  3. [Fichier]suppression d'un fichier distant
    Par HurtMarley dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 18/06/2008, 15h17
  4. [FTP] Test de l'existence d'un fichier distant
    Par helww dans le forum Langage
    Réponses: 6
    Dernier message: 06/08/2007, 15h00
  5. Réponses: 2
    Dernier message: 11/08/2003, 13h43

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