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 :

Copier un fichier


Sujet :

VBScript

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Par défaut Copier un fichier
    Bonjour,

    le programme si-dessous scan une arborescence à la recherche d'extension comptenu dans un fichier .txt.
    il enregistre les chemin des fichiers trouvés dans un fichier NameLog.csv.

    je souhaiterai copier ce fichier NameCSV.csv vers un autre repertoire à la fin de l'ecriture de celui-ci

    merci de votre aide

    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
     
    Option Explicit
    'On Error Resume next
     
    '**************************************************************************************************
    '****** Declaration des constantes ****************************************************************
    '**************************************************************************************************
    Const ForReading = 1, ForWriting = 2, ForAppending = 8		'Def les methode d'accès aux fichiers
     
    '**************************************************************************************************
    '****** Déclaration des variables *****************************************************************
    '**************************************************************************************************
    Dim chm_script					'Def variable du chemin du script
    Dim ofso						'Def variable ofso
    Dim ofile_log					'Def variable Ofile_log
    Dim oscript						'Def variable oscript
    Dim oDir						'Def variable oDir
    Dim oCreate						'Def variable oCreate
    Dim test 						'Réponse à la confirmation du scan
    Dim NameLog
    Dim NameCSV
    Dim objExt						'Variable de création de fichier Extension
    Dim NameExt						'Def le nom du fichier extension
    Dim Cherche
    Dim ofich
    Dim oExt						'conteur d'extensions
    dim objcount
     
     
    NameLog = "ReportU1.LOG"		'Def le nom du fichier log
    NameCSV = "ReportU1.CSV"		'Def le nom du fichier de config
    NameExt = "ExtensionU.txt"	'Def le nom du fichier extension
     
    '##################################################################################################
    '######## Début du corps de script ################################################################
    '##################################################################################################
    Set ofso = CreateObject("scripting.fileSystemObject")
    Set oCreate = ofso.CreateTextFile(NameLog,True)
     
    oCreate.Close
     
    If ofso.FileExists(NameCSV) Then
    ofso.DeleteFile(NameCSV)
    End If
     
     
    chm_script=Left(WScript.ScriptFullName,Len(WScript.ScriptFullName)-Len(WScript.ScriptName))	'Détermine le chemin du script
     
    '**************************************************************************************************
    '******** Mise en forme du fichier de Log *********************************************************
    '**************************************************************************************************
     
    Write_Log("Chemin Complet du fichier" & ";" & "Extension du Fichier" & ";" & "Date Dernière Modification" & ";" & "Date Dernier Accès" & ";" & "Taille du Fichier (Ko)")
     
     
    Set oExt = ofso.OpenTextFile(NameExt,ForReading,True)
     
    Do Until oExt.AtEndoFStream
    objcount = 0
    cherche = oExt.ReadLine
    ScanRep WScript.Arguments(0),cherche
    Write_log("Extension "& cherche &" : "& objCount &" fichier trouvés")
    Loop
     
    ofso.MoveFile NameLog, NameCSV
     
    '##################################################################################################
    '######## 'Zone des Fonctions du script############################################################
    '##################################################################################################
     
    '**************************************************************************************************
    '******** Fonction d'écriture du fichier de log ***************************************************
    '**************************************************************************************************
    Sub Write_log(text)
    	Dim owrite, olog				'Definition des variables de la fonction
     
    	olog = chm_script & NameLog	'olog contient le chemin + nom du fichier de log
    	Set owrite = ofso.OpenTextFile(olog,ForAppending,True)
    	owrite.WriteLine text
    	owrite.Close
    	Set ofich=Nothing
     
    End Sub
     
    '**************************************************************************************************
    '******** Fonction de Scan des répertoires ********************************************************
    '**************************************************************************************************
    Function ScanRep(source, FileExt)
     
    	Dim objExt
    	Dim odirectory
    	Dim explDirectory
    	Dim ofiles
    	Dim explFile
    	Dim subDirectory
     
    	If ofso.FolderExists(source) Then
    		Set odirectory = oFso.GetFolder(source)
    		Set ofiles=odirectory.Files 
    		For Each explFile In ofiles
    			If Ucase(ofso.GetExtensionName(explFile.Name))= FileExt  Then
    			write_log(odirectory.Path &"\" &explFile.Name & ";" & UCase(Right(explFile.Name,4-(Instr(Right(explFile.Name,4),".")))) & ";" & explFile.DateLastModified & ";" & explFile.DateLastAccessed & ";" & Round(explFile.Size/1024))
    			objcount = objcount + 1
    			Else
    			End If		
    		Next
     
    	Set subDirectory = odirectory.SubFolders
     
    		For Each explDirectory In subDirectory
    			ScanRep explDirectory.Path, FileExt
    		Next
    	End If
     
    End Function
     
     
     
    '**************************************************************************************************
    '******** Copie du fichier CSV ********************************************************************
    '**************************************************************************************************
    Function copie()
     
     
    Dim fsocop						'déclaration file system object
     
    'instanciation
    Set FSOCOP = CreateObject("Scripting.FileSystemObject")
     
    	If fsocop.FileExists(ReportU1.CSV)Then
     
    'Copie du fichier
    		Set Ftxt = fsocop.GetFile("chemin\ReportU1.CSV")   'Fichier origine
    		Ftxt.copy("chemin") 'emplacement destination
     
    		End If
    End Function
     
    copie (NameCSV)

  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 : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Oui et quel est le problème ?

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Par défaut
    Bonjour Ced600;

    Le problème est que lorsque le programme à terminé d'écrire dans le fichier CSV.
    La fonction qui est sensée réaliser la copie ne réalise rien.
    Je pense ne pas l'appeler correctement.

    Merci

    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
     
     
    '******** Copie du fichier CSV 
     
    Function copie()
     
     
    Dim fsocop						'déclaration file system object
     
    'instanciation
    Set FSOCOP = CreateObject("Scripting.FileSystemObject")
     
    	If fsocop.FileExists(ReportU1.CSV)Then
     
    'Copie du fichier
    		Set Ftxt = fsocop.GetFile("chemin\ReportU1.CSV")   'Fichier origine
    		Ftxt.copy("chemin") 'emplacement destination
     
    		End If
    End Function
     
    copie (NameCSV)

  4. #4
    Membre chevronné
    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Par défaut
    Citation Envoyé par micka180 Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set Ftxt = fsocop.GetFile("chemin\ReportU1.CSV")   'Fichier origine
    Ftxt.copy("chemin") 'emplacement destination
    L'emplacement d'origine et celui de destination sont identiques, c'est ca ton soucis ?

    A++

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Par défaut
    je ne pense pas

    chemin origine = C:\extention\new version\nouveau test\ReportU1.CSV
    chemin destination = C:\extention\new version\nouveau test\Log

  6. #6
    Membre chevronné
    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Par défaut
    Citation Envoyé par micka180 Voir le message
    je ne pense pas

    chemin origine = C:\extention\new version\nouveau test\ReportU1.CSV
    chemin destination = C:\extention\new version\nouveau test\Log
    ben à ce moment là si chemin est une variable, il ne doit pas etre entre guillemets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set Ftxt = fsocop.GetFile(chemin & "\ReportU1.CSV")   'Fichier origine
    Ftxt.copy(chemin & "\log") 'emplacement destination
    A++

  7. #7
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Par défaut
    quand je test le script de copie à par

    voici ce que j'obtiens:


    C:\extention\copie test.vbs(11, 2) Erreur d'exécution Microsoft VBScript: Objet requis: 'ReportU1'

    portant je declare la variable Dim NameCSV ="RaportU1.CSV"

  8. #8
    Membre chevronné
    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Par défaut
    montre moi ton script

  9. #9
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Par défaut
    j'ai trouvé.

    1 pas de chemin explicite dans If (FSOCOP.FileExists("C:\extension\ReportU1.CSV"))Then
    donc erreur

    2 methode copie 'Copie du fichier
    Set fso = CreateObject("Scripting.FileSystemObject" )
    fso.CopyFile "C:\extension\ReportU1.CSV", "C:\extension\LOG\"

    3 le"\ apres LOG pour les permissions

    Fonction qui fontionne 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
     
    Function copie()
     
    Dim FSOCOP					'déclaration file system object
    Dim fso						'déclaration file system object
     
    Set FSOCOP = CreateObject("Scripting.FileSystemObject")
     
    	If (FSOCOP.FileExists("C:\extension\ReportU1.CSV"))Then
     
    'Copie du fichier
    		Set fso = CreateObject("Scripting.FileSystemObject" )
    		fso.CopyFile "C:\extension\ReportU1.CSV", "C:\extension\LOG\"
     
     
    		End If
    End Function
     
    copie()
    "

  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 : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Ok parfait alors.

    Mais juste pour info la méthode copy de l'objet file (ton Ftxt) fonctionne, et tu dois lui mettre en paramètre le chemin "C:\extension\LOG\"

    Pour faciliter les prochaines résolutions de tes problèmes, si tu as besoin bien sur, lorsqu'il y a un problème sur une méthode qui prend en paramètre quelque chose, mais nous exactement ce que tu as dans ton script.
    Je m'explique :
    Lorsque tu nous mets ce code, on peut penser de 2 façon :
    1. C'est ce qu'il y a dans ton script, chemin doit être une variable, et tu ne sais pas comment la passer en paramètre. Dans ce cas cela serait : Ftxt.copy(chemin)
    2. Soit on considère que tu as mis chemin à la place du chemin exact pour ne pas le recopier, ne pas le dévoiler, ....

    Donc selon le cas, on ne partira pas sur la bonne piste et on mettra du temps avant de trouver ton erreur.
    Donc si un truc dans le script que tu postes n'est pas comme dans l'original, n'hésite pas à le dire.

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

Discussions similaires

  1. copier des fichiers
    Par Daeron dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 24/11/2004, 14h45
  2. Copier certains fichiers d'une arborescence ?
    Par narmataru dans le forum Linux
    Réponses: 4
    Dernier message: 27/04/2004, 12h15
  3. Copier coller Fichier windows
    Par KPitN dans le forum Windows
    Réponses: 8
    Dernier message: 20/04/2004, 17h32
  4. Batch pour copier des fichier
    Par borgfabr dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 09/03/2004, 07h55
  5. Détourner une fonction pour copier un fichier en mémoire
    Par Rodrigue dans le forum C++Builder
    Réponses: 6
    Dernier message: 12/11/2003, 08h29

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