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 fichier avec un accent


Sujet :

VBScript

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2020
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 114
    Points : 92
    Points
    92
    Par défaut Copie de fichier avec un accent
    Bonjour à toute et à tous

    je reviens vers vous pour une toute nouvelle question qui je l'éspère aidera d'autre personnes qui ce trouve dans ma situation

    je bloque depuis un moment sur la copie d'un fichier avec un accent, et je suis persuadé de ne pas être le seule avec ce problème

    ne pouvant le modifier car il fait partie de mon système de gestion automatiser

    en vous remerciant par avance

    voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dim FSO
    set FSO = CreateObject("Scripting.FileSystemObject" )
    FSO.CopyFile "C:\mémoire_systeme\memoire_interne\test.json" , "E:\Sauvegarde\"

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 176
    Points
    17 176
    Par défaut
    Salut

    Quel OS as tu?
    Le code suivant fonctionne sur mon ordinateur, a essayer sur le tien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim Fso, SourceFichier, DestinationFichier
    Set Fso = CreateObject("Scripting.FileSystemObject")
     
    'SourceFichier = "C:\MesProgs\En VBScript et HTA\Convertisseur noms long en cours\mémoire_systeme\FichierTest1.txt"
    'DestinationFichier = "E:\PersoFrancis\DossierMémo\FichierTest1.txt"
     
    SourceFichier = "C:\mémoire_systeme\memoire_interne\test.json"
    DestinationFichier = "E:\Sauvegarde\"
     
    FSO.CopyFile SourceFichier,DestinationFichier
     
    Set Fso = Nothing
    Citation Envoyé par Aide en ligne
    object.CopyFile ( source, destination[, overwrite] )
    source:
    Requis. Spécification, sous forme d'une chaîne de caractères pouvant comporter des caractères génériques, d'un ou plusieurs fichiers à copier.

    destination:
    Requis. Destination, indiquée sous forme d'une chaîne de caractères, vers laquelle le ou les fichiers de source doivent être copiés. Les caractères génériques ne sont pas acceptés.

    overwrite:
    Facultatif. Valeur booléenne indiquant, le cas échéant, que les fichiers existants doivent être écrasés. Si la valeur est True, les fichiers sont écrasés ; si elle est False, ils ne le sont pas. La valeur par défaut est True. Il convient de noter que CopyFile échouera si destination est en lecture seule, quelle que soit la valeur de overwrite.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2020
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 114
    Points : 92
    Points
    92
    Par défaut
    Bonsoir ProgElect

    Windows 7 64bits

    il y a une erreur en ligne 10

  4. #4
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 176
    Points
    17 176
    Par défaut
    Salut

    Ce matin, j'ai remis en route un PC sous windows 7 édition intégrale copyright 2009, système d'éxploitation 64 bits.
    J'ai créé les dossiers mémoire_systeme ==> memoire_interne sur le disque dur locale C, j'y ai mi un fichier .json nommé test.json
    Sur une clef USB J j'ai créé le dossier Sauvegarde

    Avec exactement le code que j'ai mis hier avec ses chemins => dossiers => fichier, sous éditeur VBS Factory, ben ..... pas d'erreur.

    Donc, vérifier
    Est il possible de faire un copier/coller le fichier à la main (bouton droit sur le nom du fichier du dossier source, copier puis sélection du dossier destination, bouton droit, coller), c'est bon?
    Si pas bon, donner les droits en écriture dans le dossier destination, donner aussi tous les droits dans le dossier et fichier source, .... réessayer.

    Si bon en manuelle, supprimer le fichier dossier destination puis, modifier la ligne DestinationFichier = "j:\Sauvegarde\" en ajoutant le nom du fichier, donc DestinationFichier = "j:\Sauvegarde\test.json", relancer le VBS, c'est bon?
    Toujours pas bon,
    alors là je voie pas, il faut attendre le passage d'une personne ayant eu le même problème qui a sut trouver une solution et qui la partagera.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2020
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 114
    Points : 92
    Points
    92
    Par défaut
    Bonjour ProgElect

    En copie manuelle pas de problème.

    Par le script non

    Erreur ligne 10 caractères 1 chemin d'accès introuvable

    Voilà ce que j'ai.

  6. #6
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 176
    Points
    17 176
    Par défaut
    Salut (Re)

    La difficulté provient du fait que de mon coté je ne parviens pas à reproduire ton problème.
    Ôtes moi d'un doute, sous VBScript, est il possible de faire un CopyFile entre un autre nom de dossier source sans accent(s) et le dossier destination E:\Sauvegarde\?
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2020
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 114
    Points : 92
    Points
    92
    Par défaut
    Oui sans problème à la seule condition qu'il y ai pas d'accent.

  8. #8
    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
    La ligne de code suivante donne-t-elle un résultat ? MsgBox CreateObject("Scripting.FileSystemObject").GetFile("C:\mémoire_systeme\memoire_interne\test.json").Path
    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

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2020
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 114
    Points : 92
    Points
    92
    Par défaut
    Bonsoir l_autodidacte

    et merci à vous

    j'ai testé votre ligne de code

    mais malheuresement non rien y fait.

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2020
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 114
    Points : 92
    Points
    92
    Par défaut
    problème resolu

    j'ai un code qui me permet de supprimer le répèrtoire de sauvegarde

    ensuite de récupérer intégralement le dossier et ceux malgré les accents, dossier, et sous dossiers.

    de copier dans le répèrtoire voulue avec la date du jour je partage le code pour ceux que sa intéresse

    encore merci à toute l'équipe de DVP

    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
    Option Explicit
     
    Dim CheminRepertoire, objFSO, objFolder, MonFolder
     
    CheminRepertoire = "E:\Sauvegarde\Test" 'Chemin du répertoire à traiter
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
     
    'Effacement des fichiers contenus dans un répertoire
    objFSO.DeleteFile CheminRepertoire & "\*.*", True
     
    'Effacement des sous-dossiers contenus dans un répertoire
    Set objFolder = objFSO.GetFolder(CheminRepertoire)
    For Each MonFolder In objFolder.SubFolders
    	objFSO.DeleteFolder MonFolder, True
    Next
    Set objFolder = Nothing
     
    Set objFSO = Nothing
    '*****************************************************************************************************
    'ici ce fait la séparation entre les parties de la Suppression
    '*****************************************************************************************************
    WScript.Sleep 5000
    Dim Source,Destination
    Source = "C:\mémoire_systeme"
    Destination = "E:\Sauvegarde\Test-"&Day(Date)&"-"& Month(Now) &"-"&Year(Date)
    If AppPrevInstance() Then   
        MsgBox "Il y a une instance déjà en cours !"& VbCrLF & CommandLineLike(WScript.ScriptName),VbExclamation,"Il y a une instance déjà en cours !"    
        WScript.Quit   
    Else 
        Call CopyDirs(Source,Destination)
     
    End If
    '*************************************************************************************************
    Sub CopyDirs(fromFolder,toFolder)
        Dim oFSO,c_folder,c_File,subFolder
        Set oFSO = CreateObject("Scripting.FileSystemObject")
     
        If Not(oFSO.FolderExists(fromFolder)) Then
            MsgBox "ATTENTION le dossier " & DblQuote(fromFolder) & " n'existe pas !",vbExclamation,_
            "ATTENTION le dossier " & DblQuote(fromFolder) & " n'existe pas !"
            Wscript.Quit
        End if
     
        Set c_folder = oFSO.GetFolder(fromFolder)
        On Error Resume Next
        If Not(oFSO.FolderExists(toFolder)) Then
            oFSO.CreateFolder toFolder
            If Err <> 0 Then
                MsgBox Err.Description & Vbcr &_
                "Le chemin du " & DblQuote(toFolder) &" est introuvable !" ,VbCritical,Err.Description
                Wscript.Quit
            End if    
        End If
     
        For Each c_File In c_folder.Files
            If Not(oFSO.FileExists(toFolder & "\" & c_File.Name)) Then
                oFSO.CopyFile c_folder.Path & "\" & c_File.Name,toFolder & "\" & c_File.Name
            End If
        Next
     
        For Each subFolder In c_folder.SubFolders
            If Not( oFSO.FolderExists(toFolder & "\" & subFolder.Name)) Then
                oFSO.CreateFolder toFolder & "\" & subFolder.Name
            End If
    'Appel récursive de la procèdure CopyDirs() 
            Call CopyDirs(subFolder.Path,toFolder & "\" & subFolder.Name)
        Next
    End Sub
    '*****************************************************************************************************
    'Fonction pour ajouter les doubles quotes dans une variable
    Function DblQuote(Str)
        DblQuote = Chr(34) & Str & Chr(34)
    End Function
    '******************************************************************************************************
    Function AppPrevInstance()   
        With GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")   
            With .ExecQuery("SELECT * FROM Win32_Process WHERE CommandLine LIKE " & CommandLineLike(WScript.ScriptFullName) & _
                " AND CommandLine LIKE '%WScript%' OR CommandLine LIKE '%cscript%'")   
                AppPrevInstance = (.Count > 1)   
            End With   
        End With   
    End Function   
    '*******************************************************************************************************
    Function CommandLineLike(ProcessPath)   
        ProcessPath = Replace(ProcessPath, "\", "\\")   
        CommandLineLike = "'%" & ProcessPath & "%'"   
    End Function
    '******************************************************************************************************

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

Discussions similaires

  1. Copie de fichier avec Runtime
    Par seb591 dans le forum Langage
    Réponses: 8
    Dernier message: 24/07/2007, 16h07
  2. Copie de fichier avec un autre utilisateur
    Par cretindezalpes dans le forum Delphi
    Réponses: 7
    Dernier message: 02/04/2007, 17h01
  3. [cURL] Copie de fichier avec Curl
    Par eowene dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 17/11/2006, 15h03
  4. Copie de fichiers avec progressbar
    Par serialmatrix dans le forum C++
    Réponses: 3
    Dernier message: 11/02/2006, 18h30
  5. Réponses: 3
    Dernier message: 19/10/2005, 15h58

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