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 :

concatener des fichiers dans un seul fichier


Sujet :

VBScript

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 61
    Points : 54
    Points
    54
    Par défaut concatener des fichiers dans un seul fichier
    bonjour,

    je voudrais copier plusieurs fichiers dans 1 seul :

    je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       Set oFso = CreateObject("Scripting.FileSystemObject")
       oFso.CopyFile "C:\rep1\Logs\collect*.csv", "C:\rep1\Logs\toto.csv"
    ===> C:\Edition\Users\xxxxx\Workspaceperso\ProjetVBS\agglo.wsf(171, 4) Erreur d'ex‚cution Microsoft VBScript: Chemin d'accŠs introuvable

    je passe la cmd dans une fenetre de commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Copy "C:\rep1\Logs\collect*.csv", "C:\rep1\Logs\toto.csv"
    ===> C:\rep1\Logs\collect.csv
    C:\rep1\Logs\collect_P1.csv
    C:\rep1\Logs\collect_P2.csv
    1 fichier(s) copié(s).
    c'est bon.

    si je ne copie qu'1 seul fichier, ça marche.

    si vous avez une solution ...

  2. #2
    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
    Par défaut
    bonjour,

    copyFile n'admet pas l'utilisation de caractéres génériques ...

    rien ne t'empêche d'utiliser le copy "du dos" ... :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set WshShell = WScript.CreateObject("WScript.Shell")
    WshShell.Run "cmd /C copy C:\rep1\Logs\collect*.csv  C:\rep1\Logs\toto.csv"

  3. #3
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Il y a également ceci :
    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
     Option Explicit
      Dim fso,f,fd,txt,Dest
      Const ForAppending=8, ForReading=1 
      Set fso = CreateObject("Scripting.FileSystemObject")
      set fd=fso.GetFolder("C:\rep1\Logs\")
      Set Dest=fso.OpenTextFile("C:\rep1\Logs\Toto.csv",ForAppending,true)
    for each f in fd.files
       if Ucase(f.name)<>"TOTO.CSV" then 
           Set f=fso.OpenTextFile(fd & "\" & f.Name,ForReading)
           txt=f.ReadAll
           f.close    
           Dest.Write txt
       end if
    next
    Dest.Close
    Mais chose bizarre : La taille du fichier de sortie est plus grande que celle utilisant le code de bbil.
    J'ai testé sur des fichiers texte. Avec le code de bbil, la taille est de 329 Ko alors qu'avec mon code cela fait 333 Ko.
    Quelqu'un peut-il expliquer cela ?
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  4. #4
    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
    Par défaut
    salut, l_autodidacte

    dans ton code il manque le filtrage "collect*.csv" tu n'as pas d'autre fichiers dans ce répertoire qui expliqueraient la taille plus importante ?

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 61
    Points : 54
    Points
    54
    Par défaut
    CA MARCHE TRES BIEN


    merci pour ta reponse

  6. #6
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    salut, l_autodidactedans ton code il manque le filtrage "collect*.csv" tu n'as pas d'autre fichiers dans ce répertoire qui expliqueraient la taille plus importante ?
    Salut bbil
    J'ai fait le test sur 7 fichiers texte sans rien d'autres dans le répertoire.(je n'ai pas eu besoin du filtrage).
    Dans l'explorateur Windows, la taille totale est bien 333 Ko comme celle du fichier de sortie(en utilisant mon code).
    Pour le filtrage en question, le demandeur peut l'ajouter en faisant par exemple :
    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
      Option Explicit
      Dim fso,f,fd,txt,Dest
      Const ForAppending=8, ForReading=1 
      Set fso = CreateObject("Scripting.FileSystemObject")
      set fd=fso.GetFolder("C:\rep1\Logs\")
      Set Dest=fso.OpenTextFile("C:\rep1\Logs\Toto.txt",ForAppending,true)
      for each f in fd.files
       If Ucase(Mid(f.Name,1,7))="COLLECT" Then 
           Set f=fso.OpenTextFile(fd & "\" & f.Name,ForReading)
           txt=f.ReadAll
           f.close    
           Dest.Write txt
       End if
      next
      Dest.Close
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

Discussions similaires

  1. copier coller plusieurs fichiers dans un seul fichier
    Par hobine dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 23/11/2011, 12h15
  2. Mettre plusieurs fichiers dans un seul fichier ou une table…
    Par wahab2052 dans le forum Développement de jobs
    Réponses: 7
    Dernier message: 21/09/2009, 20h41
  3. rassembler plusieurs fichiers dans un seul fichier
    Par emelfr dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/02/2009, 14h57
  4. stocker/archiver plusieurs fichiers dans un seul fichier
    Par tatoo59 dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 03/06/2007, 18h57
  5. enregistrer deux fichier dans un seul fichier
    Par Bourak dans le forum Langage
    Réponses: 9
    Dernier message: 05/11/2005, 09h48

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