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 :

Renommer des sous répertoires - erreur 800A0005


Sujet :

VBScript

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Géologue
    Inscrit en
    Septembre 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Niger

    Informations professionnelles :
    Activité : Géologue
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 37
    Points : 27
    Points
    27
    Par défaut Renommer des sous répertoires - erreur 800A0005
    Bonjour,

    Dans un dossier, j'ai un ensemble de sous répertoires et pour certains les noms sont écrit avec un mélange de majuscule et de minuscule.
    Je voudrais passer tous les noms en majuscule.

    Les répertoires existant déjà, je dois (?) passer par un nom intermédiaire pour les renomer, j'ajoute donc un .temp au nom d'orrigine (ligne 38).

    Voici ou en est mon script, et je bloque sur la ligne 40 qui me retourne l'erreur 800A0005, argument ou appel de procédure incorrect ...

    Pouvez vous me donner un coup de main? C'est certainement assez trivial, mais je ne trouve pas!
    Merci d'avance

    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
    option explicit
    dim FSO, objShell
    dim obFolder, obFolder2, obSubFolder, SubFolderName
    dim SubFolderPath, UCaseName, NewFolderName, FD, FName
     
    'Get Application object of the Windows shell.
    	Set objShell = WScript.CreateObject("Shell.Application")
     
    'Ask the user to select a folder
    	Set FSO = CreateObject("Scripting.FileSystemObject")
    	Set obFolder = objShell.BrowseForFolder (&H0&, "Select the folder to process", &H1&) ' Var obFolder
    	'Keep obFolder for sub programms
    	Set obFolder2 = obFolder
     
    If NOT obFolder IS Nothing Then
     
    	CheckRepSondage FSO, obFolder.Self.Path
     
     
    	MsgBox "Finished"
     
    Else
     
    	MsgBox "Canceled"
     
    End If
     
     
    Sub CheckRepSondage (FSO, FolderPath)
    	Set obFolder = FSO.GetFolder(FolderPath)
    	For Each obSubFolder In FSO.GetFolder(obFolder).SubFolders
    		'Prend le chemin du rep
    		SubFolderPath = obSubFolder.Path
    		'Met le chemin en majuscules
    		UCaseName = UCase (SubFolderPath)
    		Set FD = FSO.GetFolder(obSubFolder)
    		'Ajoute .temp au chemin
    		FName = UCaseName & ".temp"
    		'Renome le répertoire
    		FD.Name = FName
     
    	Next
    End Sub

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    La réponse courte est que SubFolderPath n'est pas un nom d'un fichier, il est le chemin contenant tout (:, \) qui ne sont pas permis et d'ailleurs pas du tout l'intention ce qu'on cherche à faire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		'SubFolderPath = obSubFolder.Path    'ligne #33
    		SubFolderPath = obSubFolder.Name
    La réponse longue est qu'il me semble on crée à maintes reprises la même chose qui a l'effet de donner le script très confus... Il n'est pas nécessaire de créer et recréer subfolder...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub CheckRepSondage (FSO, FolderPath)
    	dim obFolder, obSubFolder, SubFolderName, UCaseName, FName
    	Set obFolder = FSO.GetFolder(FolderPath)
    	For Each obSubFolder In obFolder.SubFolders
    		SubFolderName = obSubFolder.Name 
    		'Met le chemin en majuscules
    		UCaseName = UCase (SubFolderName)
    		FName = UCaseName & ".temp"
    		'Renome le répertoire
    		obSubFolder.Name = FName
     		'Renome encore
    		obSubFolder.Name=UCaseName
     	Next
    End Sub
    Comme ça au moins il me semble plus simple et plus clair au même temps.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Géologue
    Inscrit en
    Septembre 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Niger

    Informations professionnelles :
    Activité : Géologue
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 37
    Points : 27
    Points
    27
    Par défaut Merci
    Tsuji,

    Je me doutais bien que c’était quelque chose du genre! et je te remercie pour ton aide précieuse et efficace. De plus ta réponse devrais ... normalement m'être utile pour la suite de mon développement. Je t'en suis donc d'autant plus reconnaissant.

    Je suis un débutant et de plus cela fait plus d'un an environ que je n'ai rien écrit!

    J'avoue avoir pas mal de problème avec le FSO et, si c'est bien le le nom!!!, l'imbrication des commandes.

    Encore Merci

  4. #4
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    J'ai oublié d'éliminer FD en la remplaçant par obSubFolder dans la réécriture de la fonction en modifiant l'originale. J'ai edité mon message pour ne pas confuser les lecteurs ! Merci pour l'attention...

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Géologue
    Inscrit en
    Septembre 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Niger

    Informations professionnelles :
    Activité : Géologue
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 37
    Points : 27
    Points
    27
    Par défaut
    oui, j'avais noté cela. Je viens également de tester ta nouvelle version qui fonctionne également très bien.
    Merci

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

Discussions similaires

  1. Comptage des sous-répertoires d'un répertoire
    Par GBAGO dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/09/2007, 15h11
  2. Réponses: 6
    Dernier message: 29/05/2007, 13h33
  3. Réponses: 6
    Dernier message: 25/10/2006, 21h00
  4. Recherche de fichiers dans des sous répertoires
    Par Mimi Bulles dans le forum Langage
    Réponses: 8
    Dernier message: 25/04/2006, 16h41
  5. fichier .bat : problèmes avec des sous-répertoires
    Par aymron dans le forum Windows
    Réponses: 4
    Dernier message: 23/06/2005, 09h33

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