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 :

renommer une archive existante avant ajout d'une nouvelle archive (issu d'une compression) avec l'ancien nom


Sujet :

VBScript

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 12
    Points : 10
    Points
    10
    Par défaut renommer une archive existante avant ajout d'une nouvelle archive (issu d'une compression) avec l'ancien nom
    L'intitulé est un peu non concordant avec mon objectif.
    Voilà ce que je souhaite faire mais ça ne fonctionne pas.
    je veux compresser le contenu d'un dossier D:\Sites dans C:\Sauvegardes\Sites\Sauvegardes.zip
    Le première fois tout marche bien car Sauveragrdes.zip n'existe pas encore.
    mais la deuxième fois, il m'écarse l'ancien. j'ai décidé alors de renommer l'ancien fichier zippé avant de faire la compression.
    mais ça ne marche pas.
    voiçi mon code :
    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
     
    '======================== Renommer la sauvegarde avant de compresser ===============================
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
     
    Dim Source, Destination, MyHex, MyBinary, i
    Dim oShell, oApp, oFolder, oCTF, oFile
    Dim oFileSys
     
    Source = "D:\Sites\"
    Destination = "C:\Sauvegardes\Sites\Sauvegardes.zip"
     
     
    Set FSO = CreateObject("Scripting.FileSystemObject" ) 
    If FSO.FolderExists(Destination) Then 
    	'Renommer le dossier existant
    	FSO.REN "C:\Sauvegardes\Sites\Sauvegardes.zip" , "Sauvegardes_ancien.zip"
    End If 
     
    '=======================================================
     
    'Compression du contenu du C:\sauvegardes
     
    MyHex = _
    Array(80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
     
    For i = 0 To UBound(MyHex)
        MyBinary = MyBinary & Chr(MyHex(i))
    Next
     
    Set oShell = CreateObject("WScript.Shell")
    Set oFileSys = CreateObject("Scripting.FileSystemObject")
     
    'Creation du zip
    Set oCTF = oFileSys.CreateTextFile(Destination, True)
    oCTF.Write MyBinary
    oCTF.Close
    Set oCTF = Nothing
     
    Set oApp = CreateObject("Shell.Application")
     
    Set oFolder = oApp.NameSpace(Source)
    If Not oFolder Is Nothing Then _
        oApp.NameSpace(Destination).CopyHere oFolder.Items
     
    wScript.Sleep 50
     
    Set oFile = Nothing
    Je souhaite garder toutes les sauvegardes anciennes quelque soit le nombre.
    J'ai l'idée d'ajouter à chaque nouvelle fichier compressé un suffixe avec la date.
    mais je n'arrive pas à la concrétiser.
    Si quelqu'un a une idée de comment resoudre ce problème... Merci beaucoup

    dadaapocalypse

  2. #2
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Toutes mes excuses.
    il y avait une erreur
    à la place de
    FSO.REN "C:\Sauvegardes\Sites\Sauvegardes.zip", "Sauvegardes_ancien.zip"
    (je suis bête car REN n'est pas une propriété de FSO)
    il fallait mettre :
    set MonShell = Wscript.CreateObject("Wscript.Shell")
    MonShell.Run "REN C:\Sauvegardes\Sites\Sauvegardes.zip Sauvegardes_ancien.zip"
    mais ça ne fonctionne toujours pas.
    voici le nouveau code :
    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
     
    '======================== Renommer la sauvegarde avant de compresser ===============================
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
     
    Dim Source, Destination, MyHex, MyBinary, i
    Dim oShell, oApp, oFolder, oCTF, oFile
    Dim oFileSys
     
    Source = "D:\Sites\"
    Destination = "C:\Sauvegardes\Sites\Sauvegardes.zip"
     
    set MonShell = Wscript.CreateObject("Wscript.Shell") 
    Set FSO = CreateObject("Scripting.FileSystemObject" ) 
    If FSO.FolderExists(Destination) Then 
    	'Renommer le dossier existant
    	MonShell.Run "REN C:\Sauvegardes\Sites\Sauvegardes.zip Sauvegardes_ancien.zip"
    End If 
     
    '=======================================================
     
    'Compression du contenu du C:\sauvegardes
     
    MyHex = _
    Array(80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
     
    For i = 0 To UBound(MyHex)
        MyBinary = MyBinary & Chr(MyHex(i))
    Next
     
    Set oShell = CreateObject("WScript.Shell")
    Set oFileSys = CreateObject("Scripting.FileSystemObject")
     
    'Creation du zip
    Set oCTF = oFileSys.CreateTextFile(Destination, True)
    oCTF.Write MyBinary
    oCTF.Close
    Set oCTF = Nothing
     
    Set oApp = CreateObject("Shell.Application")
     
    Set oFolder = oApp.NameSpace(Source)
    If Not oFolder Is Nothing Then _
        oApp.NameSpace(Destination).CopyHere oFolder.Items
     
    wScript.Sleep 50
     
    Set oFile = Nothing
    je vous remercie d'avance de me proposer une aide

    dadaapocalypse

  3. #3
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Merci bbil
    Excusez moi car je n'ai pas pensé que MOVE peut renommer un fichier et le garder dans le même répertoire de départ.
    merci beaucoup car ça marche
    voici le code :

    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
     
    'on error resume next
     
    '================================================= Renommer avant nouvelle compression =================================
     
    '======================== Renommer la sauvegarde avant de compresser ===============================
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
     
    Dim Source, Destination, MyHex, MyBinary, i
    Dim oShell, oApp, oFolder, oCTF, oF1 
    Dim oFileSys
     
    Source = "D:\Sites\"
    Destination = "C:\Sauvegardes\Sites\Sauvegardes.zip"
    set MonShell = Wscript.CreateObject("Wscript.Shell")
    Set FSO = CreateObject("Scripting.FileSystemObject" ) 
    set oF1=FSO.GetFile(Destination)
    If FSO.FileExists(Destination) Then 
    	wscript.echo "le fichier destination  : "& Destination &" existe"
    	oF1.Move "C:\Sauvegardes\Sites\Sauvegardes_ancien.zip"
    End If 
     
    '=========================================================
     
    'Compression du contenu du C:\sauvegardes
     
    MyHex = _
    Array(80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
     
    For i = 0 To UBound(MyHex)
        MyBinary = MyBinary & Chr(MyHex(i))
    Next
     
    Set oShell = CreateObject("WScript.Shell")
    Set oFileSys = CreateObject("Scripting.FileSystemObject")
     
    'Creation du zip
    Set oCTF = oFileSys.CreateTextFile(Destination, True)
    oCTF.Write MyBinary
    oCTF.Close
    Set oCTF = Nothing
     
    Set oApp = CreateObject("Shell.Application")
     
    Set oFolder = oApp.NameSpace(Source)
    If Not oFolder Is Nothing Then _
        oApp.NameSpace(Destination).CopyHere oFolder.Items
     
    wScript.Sleep 5000
    Le problème de renommage est résolu. seulement aprés compression je ne garde que le premier fichier qui a été renommé. càd que les nouvelles sauvegardes ne sont pas sauvegardées.
    si quelqu'un a une idée, je le remercie d'avance

    merci
    dadaapocalypse

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Enfin, je suis arrivée à renommer l'archive avec la date du jour.
    Voici le code :
    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
    69
     
     
    '====================================== Compresser dans un dossier temporaire TEMP ======================================
     
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
     
    Dim Source, Destination, MyHex, MyBinary, i
    Dim oShell, oApp, oFolder, oCTF ', oFile
    Dim oFileSys
     
    Source = "D:\Sites\"
    Destination = "C:\Temp\archive.zip"
    Destination_Final = "C:\Sauvegardes\Sites\Sauvegardes.zip"
     
    MyHex = _
    Array(80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
     
    For i = 0 To UBound(MyHex)
        MyBinary = MyBinary & Chr(MyHex(i))
    Next
     
    Set oShell = CreateObject("WScript.Shell")
    Set oFileSys = CreateObject("Scripting.FileSystemObject")
     
    'Creation du zip
    Set oCTF = oFileSys.CreateTextFile(Destination, True)
    oCTF.Write MyBinary
    oCTF.Close
    Set oCTF = Nothing
     
    Set oApp = CreateObject("Shell.Application")
     
    Set oFolder = oApp.NameSpace(Source)
    If Not oFolder Is Nothing Then _
        oApp.NameSpace(Destination).CopyHere oFolder.Items
     
    wScript.Sleep 5000
     
    'Set oFile = Nothing
    'On Error Resume Next
     
    '=====================	     Renommer avec la date du jour et déplacement vers destination finale      ================
     
    Dim variable
    set FSO = CreateObject("Scripting.FileSystemObject")
    set oF1 = FSO.GetFile("C:\Temp\archive.zip")
    'renommer avec la date du jour 
    sLog = Date()&"_"&Time()
    madate = Replace(CStr(Date),"/","_")
    montime = Replace(CStr(Time),":","_")
    'sLog=Date()
    wscript.echo madate
    wscript.echo "l'extension du fichier : " & sLog
     
    'oF1.move "C:\Sauvegardes\Sites\masauvegarde.zip"
    'variable = "C:\Sauvegardes\Sites\masauvegarde.zip"
    wscript.echo "la valeur de la variable : " & variable
    'oF1.Move variable
    Wscript.echo "Nom du fichier : " & oF1.Name
    env=oF1.Name
    wscript.echo "env = " & env
    env_bis = madate & montime & env
    car = "C:\Sauvegardes\Sites\"
    env_dos= car & env_bis
    wscript.echo "env_bis :" & env_bis
     
    wscript.echo "car =" &car
    wscript.echo "env_dos = " & env_dos
    oF1.Move env_dos
    J'ai utilisé la concaténation afin d'ajouter la date et time au nom du fichier et la méthode replace :
    madate = Replace(CStr(Date),"/","_") et montime = Replace(CStr(Time),":","_")
    et ça fonctionne

    Grand merci pour ce forum si bien organisé

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 27/03/2014, 09h07
  2. Réponses: 6
    Dernier message: 26/08/2013, 15h35
  3. Réponses: 16
    Dernier message: 09/10/2006, 10h12
  4. [C#] Ajout d'une Form existante dans mon projet ?
    Par sara21 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/10/2006, 01h08

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