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 :

Comment déplacer un fichier en le renommant avec incrémentation si le fichier existe ?


Sujet :

VBScript

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 840
    Par défaut Comment déplacer un fichier en le renommant avec incrémentation si le fichier existe ?

    Afin d'améliorer mon Vbscript Hackoo VIRUS Cleaner.vbs
    J'ai créé ce code pour le tester avant de le mettre en œuvre dans mon script principal, mais, je reçois quelques problèmes à la ligne N ° 46 avec erreur "fichier n'existe pas"
    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
    67
    68
    Option Explicit
    Dim SFile,SFile1,SFile2,SFile3,SFile4,Folder,Title,Rename
    Title = "Moving File to the Quarantaine Folder ..."
    SFile = "E:\HackooTest\Nouveau dossier\VIRUS.vbs"
    Folder = "E:\HackooTest\Quarantaine"
    Rename = GetNameFile(sFile)
    Call MoveFile2Quarantaine(sFile,Folder,Rename)
    MsgBox "The File " & DblQuote(Rename) & " is moved to the Quarantaine Folder",VbInformation,Title
    '*************************************************************************************
    SFile1 = "E:\HackooTest\Nouveau dossier(2)\VIRUS.vbs"
    Rename = GetNameFile(sFile1)
    Call MoveFile2Quarantaine(sFile1,Folder,Rename)
    MsgBox "The File " & DblQuote(Rename) & " is moved to the Quarantaine Folder",VbInformation,Title
    '*************************************************************************************
    SFile2 = "E:\HackooTest\Nouveau dossier(3)\VIRUS.vbs"
    Rename = GetNameFile(sFile2)
    Call MoveFile2Quarantaine(sFile2,Folder,Rename)
    MsgBox "The File " & DblQuote(Rename) & " is moved to the Quarantaine Folder",VbInformation,Title
    '*************************************************************************************
    SFile3 = "E:\HackooTest\Nouveau dossier(4)\VIRUS.vbs"
    Rename = GetNameFile(sFile3)
    Call MoveFile2Quarantaine(sFile3,Folder,Rename)
    MsgBox "The File " & DblQuote(Rename) & " is moved to the Quarantaine Folder",VbInformation,Title
    '*************************************************************************************
    SFile4 = "E:\HackooTest\Nouveau dossier(5)\VIRUS.vbs"
    Rename = GetNameFile(sFile4)
    Call MoveFile2Quarantaine(sFile4,Folder,Rename)
    MsgBox "The File " & DblQuote(Rename) & " is moved to the Quarantaine Folder",VbInformation,Title
    '*************************************************************************************
    Sub MoveFile2Quarantaine(sFile,Folder,Rename)
    	'On Error Resume Next
    	Dim  FSO,Ws,Tab,i,j
    	Set Ws = CreateObject("Wscript.Shell")
    	Set FSO = CreateObject("Scripting.FileSystemObject")
    	'Tab = Split(sFile,"\")
    	'Rename = Tab(UBound(Tab))
    	i = 0
    	j = i + 1
    	Do
    		i = i + 1
    		'If FSO.FolderExists(Folder) Then
    			If Not FSO.FileExists(Folder & "\" & Rename & "_Infected.txt") Then
    				FSO.GetFile(sFile).Move Folder & "\" & Rename & "_Infected.txt"
    				Exit Sub
    			ElseIf Not FSO.FileExists(Folder & "\" & Rename & "("& i &")" & "_Infected.txt") Then 'And FSO.FileExists(Folder & "\" & Rename & "_Infected.txt") Then
    				FSO.GetFile(sFile).Move Folder & "\" & Rename & "("& j &")" & "_Infected.txt"
    				Exit Sub
    			ElseIf j = i Then
    				j = j + 1
    				If Not FSO.FileExists(Folder & "\" & Rename & "("& j &")" & "_Infected.txt") Then
    					FSO.GetFile(sFile).Move Folder & "\" & Rename & "("& j &")" & "_Infected.txt"
    					Exit Sub
    				End if
    			End If
    		'End If
    	Loop Until j = i
    End Sub
    '**********************************************************************************************
    'Fonction pour ajouter les doubles quotes dans une variable
    Function DblQuote(Str)
    	DblQuote = Chr(34) & Str & Chr(34)
    End Function
    '**********************************************************************************************
    Function GetNameFile(sFile)
    	Dim  Tab
    	Tab = Split(sFile,"\")
    	GetNameFile = Tab(UBound(Tab))
    End Function
    de votre aide

  2. #2
    Membre éclairé Avatar de SCryptCypher
    Femme Profil pro
    MacGyver
    Inscrit en
    Novembre 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : MacGyver

    Informations forums :
    Inscription : Novembre 2013
    Messages : 35
    Par défaut
    Bonjour,

    Voici un petit bout de code pour enregistrer un fichier avec incrémentation si le fichier existe déjà (à adapter) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Save_Path = FolderPath & FileName & Ext
     
    n = 1
    Same_Path = Save_Path
    Do While Dir(Save_Path) <> ""
       Save_Path = Left(Same_Path, Len(Same_Path) - Len(Ext)) & " (" & n & ")" & Ext
       n = n + 1
    Loop
    Vu le type d'erreur, cependant, je dirais que le problème vient de la fonction .Move : il semble ne pas trouver pas le fichier source.

    Tu peux essayer plutôt avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FSO.MoveFile SourceFile, DestinationFile
    Bonne journée.

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 840
    Par défaut
    Citation Envoyé par SCryptCypher Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Save_Path = FolderPath & FileName & Ext
    n = 1
    Same_Path = Save_Path
    Do While Dir(Save_Path) <> ""
       Save_Path = Left(Same_Path, Len(Same_Path) - Len(Ext)) & " (" & n & ")" & Ext
       n = n + 1
    Loop
    Vu le type d'erreur, cependant, je dirais que le problème vient de la fonction .Move : il semble ne pas trouver pas le fichier source.
    Tu peux essayer plutôt avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FSO.MoveFile SourceFile, DestinationFile
    et pour votre remarque car j'ai pu m'en sortir avec cette dernière
    et voici le code qui fonctionne correctement et le problème est
    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
    Option Explicit
    Dim fso,Ws,sFiles,sFile,sFileName,Quarantaine,Title
    Title = "Déplacement des fichiers suspects dans la quarantaine" 
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set Ws = CreateObject("wscript.Shell")
    Quarantaine = "e:\HackooTest\Quarantaine"
    sFiles = Array( _
    "e:\HackooTest\Folder1\VIRUS.vbs", _
    "e:\HackooTest\Folder2\VIRUS.vbs", _
    "e:\HackooTest\Folder3\VIRUS.vbs", _
    "e:\HackooTest\Folder4\VIRUS.vbs", _
    "E:\HackooTest\Folder5\VIRUS.vbs", _
    "E:\HackooTest\Folder6\VIRUS.vbs" _
    )
     
    For Each sFile In sFiles
        If fso.FileExists(sFile) Then
            sFileName = GetNewName(sFile)
            fso.MoveFile sFile,sFileName 
            Ws.Popup "Le fichier " & DblQuote(sfile) & " est déplacé vers le dossier quarantaine comme " & DblQuote(sFileName),"4",Title,VbInformation
        Else
            Ws.Popup DblQuote(sfile) & " n'existe pas !","2",Title,VbExclamation
        End If
    Next
    '**********************************************************************************************
    Function GetNewName(sFile)
        Dim snamebase,sname,i,sTarget
        snamebase = Split(Right(sFile, Len(sFile) - InStrRev(sFile,"\")),".")(0)
        sname = snamebase
        i = 0
        While i < 100
            sTarget = Quarantaine & "\" & sname & "_Infected.txt"
            If fso.FileExists(sTarget) Then
                i = i + 1
                sName = snamebase & "(" & i & ")"
            Else
                GetNewName = sTarget
                Exit Function
            End If
        Wend
    End Function
    '**********************************************************************************************
    Function DblQuote(Str)
        DblQuote = Chr(34) & Str & Chr(34)
    End Function
    '**********************************************************************************************

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/09/2014, 09h59
  2. Comment déplacer un fichier avec 2 méthodes
    Par unixinu dans le forum Administration système
    Réponses: 9
    Dernier message: 28/10/2010, 14h52
  3. Réponses: 2
    Dernier message: 13/12/2009, 22h12
  4. Comment déplacer des fichiers sous perl ?
    Par Ickou dans le forum Langage
    Réponses: 6
    Dernier message: 10/11/2005, 12h17
  5. Comment extraire un fichier depuis un CD avec secteurs illisibles ?
    Par Millenod dans le forum API, COM et SDKs
    Réponses: 13
    Dernier message: 22/01/2005, 12h09

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