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 :

Copie de fichiers avancée


Sujet :

VBScript

  1. #1
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut Copie de fichiers avancée
    Bonjour, je voudrai faire un script VBS pour mettre à jour une clé USB, le script devra copier le contenu de certain répertoire, et ne copier les fichiers qui existe déja sur ma clé de destination uniquement s'il on été modifier, pouriez vous m'aider ?

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Ici tu as des exemples de script pour gérer les fichiers et les répertoires.
    Parcours les deux collections de scripts, tu trouvera peut être de koi détecter une clé USB.
    Peut être .
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  3. #3
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    Bonjour et merci

    J'ai trouver ceci pour la copie de réprtoire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    FSO.CopyFolder "Nouveau dossier", "Nouveau dossier1"
    Mais rien pour ne copier que les fichier non présent dans le destination

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Mais rien pour ne copier que les fichier non présent dans le destination
    Ceci faut le faire toi même en utilisant les exemples proposé.
    Il faut récupérer la liste des fichiers des deux répertoires.
    Comparer les listes obtenus.
    Créer une liste de fichier non nprésentr dans la destinations.
    Et faire une copie de chacun de ces fichiers de la liste.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  5. #5
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    Mais c'est un peut plus compliquer que ca, je veut que les fichiers existant dans la destination soit copier s'ils on été modifié

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Tu as la possibilité de regardé la date de modification.
    Tu la compare avec un date de référence et le tour et joué.
    DateComp et DateDiff si je ne me trompe pas pour comparer des dates.
    Sur le lien que je t'ai passé il doit y avoir un exemple pour obtenir la date de modification.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  7. #7
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    Merci pour ses explication

    Je vai étudier ca cette nui je pensse


    Eb attenadant, si je fait une simple copie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set FSO = CreateObject("Scripting.FileSystemObject")
    FSO.CopyFolder "Nouveau dossier", "Nouveau dossier1"
    N'y a t-il pas moyen que les fichiers copiser s'affiche dans la console comme en batch pour voir si les fichiers se copi bien ?

  8. #8
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Si la méthode renvois une valeur tu peux essayer de l'afficher sur la sortis standard avec wscript.echo.
    Sinon nan, il faut que tu fasses la vérification manuellement.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  9. #9
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    Mais le wscript.echo s'affichera une fois que la copie sera terminé, moi je voudrai voir les noms des fichiers pandant la copie, qu'un fenêtre soit ouverte tout le temps de la copie pour que l'on voi quelque chose quoi

  10. #10
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Pas avec copyfolder.
    Il faudrait copier les fichiers un à un toi même dans ce cas.
    Il y a copyfile. Mais avant il faudra lister les fichiers du répertoire. Il y a un exemple pour enumérer les fichiers dans un répertoires sur le site que je t'ai passé.

    tu énumères, et parcours la liste des fichiers et pour chaque fichier tu copies, et avant la copie tu affiches un message et après tu affiches que c'est terminé.

    En vbs je ne vois pas autrement. Regarde quand même dans les contributionsd, concernant tous les msgbox modifier, avancé que tu peux trouver, quelque fois que quelqu'un a fait une petite appli fenetre pour la copie. Tu sais lorsque tu fais parcourir les répertoires lors d'une installations.
    Peut être qu'il y a une mise en attente avec une barre de progression.

    Recherche également tous les scripts qui aurait implémenté une barre de progression.
    Mais pour voir les noms de fichier se copier il faut utiliser ma méthode.

    Je viens de me rappeler une chose que RadPat aime beaucoup -> utiliser la console dos
    En vbs tu peux executer des commandes dos. Regarde l'objet WSH, et cherche la méthode run.

    En plus pour toit les commande dos cela ne devrait pas être un trop gros problème non ?
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  11. #11
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    Merci encore

    Je voudrai justement evité la commande dos, par ce que le dos ca va pas avec vista, c'est pour cela que je passe au vbs.

    Pour la barre de progression, c'est encore mieu, s'il n'y a pas les nom des fichiers ce n'est pas grave, ce qu'il faut c'est que je voi quelque chose, une barre de progression c'est parfait ,)


    Mais il faudrai que quelqu'un vueille bien m'aider, voir me donner des exemple par ce que les lien que tu ma donner sont en anglai et je ne comprend pas l'anglai, et je ne trouve pas toujours ce que je cherche sur vbs avec google

    Donc t'aurai pas un lien pour la berre de progression ?

  12. #12
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Non, mais je sais que sur le forum il y a eu des discussions sur le sujet, et regarde dans les contributions, il y en a peut être une.

    Mais si tu fais du vista je te conseille de faire du powershell. Tu auras plus de possibilité et si je ne me trompe pas accés au classe du framework .Net

    L'objectif de MS est d'imposer le powershell à la place du vbs, batch, ...
    Donc si tes scripts doivent servir plus de 2 semaines, autant les faire en un langage que tu es sur de pouvoir toujours utiliser sur vista.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  13. #13
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    Mais pour l'instant je sui entrain de faire un script pour géré ma clé usb, et je ne veut pas avoir a installer powershelle pour géré ma clé, il me faut juste cette barre de défillement, aprés je passerai a powershell

  14. #14
    Membre averti
    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Points : 341
    Points
    341
    Par défaut
    Salut,

    voici ce que je peux te proposer en VBS, la copie du répertoire c:\temp vers c:\temp2 :

    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
    On Error Resume next
     
    Set ObjFso = CreateObject("Scripting.FileSystemObject") 
    Set objShell = CreateObject("Shell.Application")
     
    Set Fold = ObjFso.CreateFolder("C:\Temp2\")
    CreateFolder = Fold.Path
     
    Fold1 = "C:\Temp\*.*" 
    Fold2 = Fold
     
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.NameSpace(Fold2) 
     
    objFolder.CopyHere Fold1, FOF_CREATEPROGRESSDLG
    Attention, il faut que tu disposes de suffisemment de fichiers dans C:\Temp pour avoir le temps de voir ta barre de défilement.

    A++
    Plus tu pédales moins vite, moins t'avances plus vite.

  15. #15
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    Merci pour cette barre de progression c'est parfait

    Toute foi, n'y aurait il pas moyen de simplifier le code ?

  16. #16
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    Citation Envoyé par ced600 Voir le message
    Pas avec copyfolder.
    Il faudrait copier les fichiers un à un toi même dans ce cas.
    Il y a copyfile. Mais avant il faudra lister les fichiers du répertoire. Il y a un exemple pour enumérer les fichiers dans un répertoires sur le site que je t'ai passé.
    Le lien que tu ma donner et en anglai, et je ne comprend pas l'anglai, tu n'aurait pas le lien directe ?


    Si non j'ai trouver ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.GetFolder("D:\perso")
    Set fc = f.Files
    Set fileWriter = fso.OpenTextFile("D:\perso\liste.txt", 2, True)
    For Each f1 in fc
    fileWriter.WriteLine f1.name
    Next
    Mais il ne met pas les chemin complet des fichiers, et il ne liste pas les fichiers des sous répertoires, pouriez vous m'aider a aranger ca ?

  17. #17
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Envoyé par ced600
    Pas avec copyfolder.
    Il faudrait copier les fichiers un à un toi même dans ce cas.
    Il y a copyfile. Mais avant il faudra lister les fichiers du répertoire. Il y a un exemple pour enumérer les fichiers dans un répertoires sur le site que je t'ai passé.
    Le lien que tu ma donner et en anglai, et je ne comprend pas l'anglai, tu n'aurait pas le lien directe ?
    As tu encore besoin de cette solution avec la progresse barre de RadPat ? Moi je te l'avais proposé parce que je pensais que tu voulais voir la copie d'un fichier.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  18. #18
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    A vrai dire je ne m'en ser que pour un script de la barre de progression, mais pour la copie avance je vérai plu tart si je le rajouterer, il faut déja que je puisse faire le script

  19. #19
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Pour lister les fichiers d'un répertoire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colFiles = objWMIService. _
        ExecQuery("Select * from CIM_DataFile where Path = '\\Scripts\\'")
    For Each objFile in colFiles
        Wscript.Echo objFile.Name 
    Next

    Copier un fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Const OverwriteExisting = True
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    objFSO.CopyFile "C:\FSO\ScriptLog.txt" , "D:\Archive\", OverwriteExisting
    Les deux ensemble avec un affichage des fichiers copiés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Const OverwriteExisting = True
    strComputer = "."
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colFiles = objWMIService. _
        ExecQuery("Select * from CIM_DataFile where Path = '\\Scripts\\'")
     
    For Each objFile in colFiles
        Wscript.Echo objFile.Name
        objFSO.CopyFile objFile.Name , "D:\Archive\", OverwriteExisting
    Next
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  20. #20
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    Quane je teste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colFiles = objWMIService. _
        ExecQuery("Select * from CIM_DataFile where Path = '\\Scripts\\'")
    For Each objFile in colFiles
        Wscript.Echo objFile.Name 
    Next
    Je ne voie la liste des fichiers ni dans une fenêtre ni dans un fichier.txt, où est elle ?

Discussions similaires

  1. Fonction de copie de fichier avancée
    Par Sub0 dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 31/01/2013, 22h26
  2. Question d'un débutant / copie fichiers avancé
    Par booleanf dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 21/08/2009, 15h32
  3. [C#] Copie de fichier via l'API
    Par slyv dans le forum Windows Forms
    Réponses: 5
    Dernier message: 20/12/2004, 22h39
  4. [Kylix] Copie de fichier...
    Par paty.olivier dans le forum EDI
    Réponses: 1
    Dernier message: 23/06/2004, 12h55
  5. Copie de fichier
    Par Bjorn dans le forum C
    Réponses: 4
    Dernier message: 11/06/2002, 15h23

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