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 :

[VBScript] (débutant) Copie d'un répertoire réseau


Sujet :

VBScript

  1. #1
    Membre du Club Avatar de benoitB
    Profil pro
    Inscrit en
    Août 2002
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 78
    Points : 68
    Points
    68
    Par défaut [VBScript] (débutant) Copie d'un répertoire réseau
    Bonjour, je souhaire recopier la totalité d'un lecteur réseau sur un disque du local :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim objFSO
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    IF objFSO.FolderExists("\\pao1\Dossier_Service") THEN
    	objFSO.CopyFolder("\\pao1\Dossier_Service", "F:\Dossier_Service")
    END IF
    L'erreur est le caractère 69 de la ligne de recopie avec le numéro d'erreur 800A0414 : L'appel d'une fonction Sub n'admet pas de parenthèses.

    Sans les parenthèses c'est l'erreur numéro 800A0005 Argument ou appel de procédure incorrect

    Des idées ? Merci

  2. #2
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Je viens de tester ton script.
    Avec les parenthèses, j'ai la même erreur que toi, mais en les enlevant, ça fonctionne... (Mais j'ai laissé les guillemets.)
    C'est bizarre...
    Tu travailles sur quel O.S. ?

  3. #3
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Comportement habituel dans l'environnement VB(S/A).

    Si on envoie plus d'un paramètre entre parenthèses à une Sub, VB interprète la commande comme l'appel à une Function.

    Voici les 3 syntaxes possibles:

    Résutat = AppelFunction(Paramètres)

    AppelSub = (1 seul paramètre)

    AppelSub Param1, param2, ...
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  4. #4
    Membre du Club Avatar de benoitB
    Profil pro
    Inscrit en
    Août 2002
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 78
    Points : 68
    Points
    68
    Par défaut XP PRO
    Mon script ne fonctionne pas sous XP PRO

  5. #5
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Je suis sous XP Pro, et ça marche.
    Tu veux nous envoyer ton code SANS les parenthèses, s'il te plait?

  6. #6
    Membre du Club Avatar de benoitB
    Profil pro
    Inscrit en
    Août 2002
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 78
    Points : 68
    Points
    68
    Par défaut voila tout le code
    Voula tout 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
    Function myBackup (TypeDeSauvegarde)
    	Dim objFSO
    	Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
     
    	' Effacement du répertoire "F:\BACKUP" si il existe
    	IF objFSO.FolderExists("F:\BACKUP") THEN
    		objFSO.DeleteFolder "F:\BACKUP"
    	END IF	
    	' Renommage de l'ancien répertoire DESTINATION "F:\Dossier_Service"
    	objFSO.MoveFolder "F:\Dossier_Service", "F:\BACKUP"
    	' Création d'un répertoire destination vierge
    	objFSO.CreateFolder("F:\Dossier_Service")
     
    	Dim TailleSource
    	IF objFSO.FolderExists("\\pao1\Dossier_Service") THEN
    		objFSO.CopyFolder "\\pao1\Dossier_Service", "F:\Dossier_Service"
    		TailleSource = 1
    	ELSE
    		TailleSource = -1
    	END IF
     
    	' Log file : durée de la tâche
    	Dim LogFile
    	Set LogFile = objFSO.OpenTextFile(sBackupLogFile, 8, True, TristateFalse)
    	LogFile.WriteBlankLines(1)
    	LogFile.Write(Date & ";" & Time & ";myBackup;" & get_UserName() & ";" & get_UserDomain() & ";" & get_ComputerName() & ";" & TailleSource)
    	LogFile.Close
    End Function
    TailleSource me permet de voir dans le fichier log que le répertoire pao1 est bien vu par ma fonction

  7. #7
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Et le DeleteFolder marche, lui?
    Tu n'aurais pas un problème de droit sur "Dossier_Service"? D'ailleurs, ça doit être un nom de partage, ça? Si tu remplaces ça par un lecteur réseau, ça ne vas pas mieux?

  8. #8
    Membre du Club Avatar de benoitB
    Profil pro
    Inscrit en
    Août 2002
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 78
    Points : 68
    Points
    68
    Par défaut ca marche et ... ca marche pas
    Alors après essais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IF objFSO.FolderExists("\\pao1\Dossier_Service") THEN
    	objFSO.CopyFolder "F:\Dossier_Service", "F:\OLD_Dossier_Service"
    END IF
    marche et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IF objFSO.FolderExists("\\pao1\Dossier_Service") THEN
    	objFSO.CopyFolder "\\pao1\Dossier_Service", "\\pao1\OLD_Dossier_Service"
    END IF
    marche pas !!!

  9. #9
    Membre du Club Avatar de benoitB
    Profil pro
    Inscrit en
    Août 2002
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 78
    Points : 68
    Points
    68
    Par défaut nom de lecteur ?
    Pour info le dossier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "\\pao1_Dossier_Service"
    est situé sur un PC réseau pao1 dans lequel il y a un disque dur ayant ce fameux répertoire "Dossier_Service", mais maintenant que j'y réfléchis il manque peut-etre le lien entre le nom du PC et le répertoire qui est le nom de lecteur non ?

  10. #10
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Non. Pour accéder à un lecteur distant en nom UNC, tu dois utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    \\NomMachine\NomPartage
    éventuellement suivi du nom du sous-répertoire.
    Et sur la machine distante, il DOIT y avoir un partage, qui correspond à un répertoire, mais peut avoir un nom différent.
    Par exemple, sur la machine "pao", le répertoire
    "C:\Local\Test" peut être partagé sous le nom "MonPartage".
    Tu y accèdes alors depuis une autre machine par
    \\pao\MonPartage

    En plus, les droits sont gérés à la fois sur le partage ET sur le répertoire...
    Il faut vérifier tout ça.

  11. #11
    Membre du Club Avatar de benoitB
    Profil pro
    Inscrit en
    Août 2002
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 78
    Points : 68
    Points
    68
    Par défaut copie par DOS possible
    J'ai essaye en commande dos :
    copy \\pao1\Dossier_Service\*.* F:\DESTINATION
    et toutest copié.....
    Donc :
    - J'ai les droits (de copie) bon c'est moi qui administre les partages alors heureusement
    - J'y ai accès

    J'en déduis que ma syntaxe, ou mes syntaxes ne sont pas correctes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    objFSO.CopyFolder "\\pao1\Dossier_Service", "F:\DESTINATION",  OverWriteFiles
     
    objFSO.CopyFolder "Y:", "F:\DESTINATION",  OverWriteFiles

  12. #12
    Membre du Club Avatar de benoitB
    Profil pro
    Inscrit en
    Août 2002
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 78
    Points : 68
    Points
    68
    Par défaut éléments de réflexion...
    Voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IF objFSO.FolderExists("\\pao1\Dossier_Service") THEN
    	objFSO.CopyFolder "\\pao1\Dossier_Service", "F:\TOTO"
    END IF
    Ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IF objFSO.FolderExists("\\pao1\Dossier_Service") THEN
    	objFSO.CopyFolder "F:\TOTO", "\\pao1\Dossier_Service"
    END IF
    Fonctionne

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

Discussions similaires

  1. [Batch] copie + renommage de fichiers sur un répertoire réseau
    Par PoichOU dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 10/03/2014, 15h28
  2. [XL-2007] Copie d'un répertoire vers un répertoire "Favoris réseau"
    Par moustikkette dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 22/01/2010, 16h06
  3. [Débutant][copie object]modifications
    Par pacha1 dans le forum Langage
    Réponses: 11
    Dernier message: 15/07/2004, 12h17
  4. Fonctions permettant la copie d'un répertoire
    Par benj63 dans le forum C++Builder
    Réponses: 6
    Dernier message: 17/06/2004, 08h41
  5. [débutant][jsp]Transfer vers le réseau
    Par fadoua dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 27/08/2003, 13h20

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