Question
Changer le nom d'un dossier
- Non
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 11 ans 8 mois #17803
par Non
Changer le nom d'un dossier a été créé par Non
Bonjour
!
Je travaille sous Powershell 2.0
J'ai créé ce script :
[code:1]
Get-ChildItem -path \"$pathArbo\*\*\",\"$pathArbo\*\" | % {
If ($_.Attributes -eq \"Directory\"«»){
Write-Host \"Dossier : $_\"
Write-Host \"Dossier modifié : $(Conv-Rename $_.Name)\"
#Rename-Item ($_.FullName) (Conv-Rename $_.Name)
[System.IO.File]::Move($_ , (Conv-Rename $_.Name))
}
}
[/code:1]
J'ai remplacé le Rename-Item ($_ , (Conv-Rename $_.Name)) par [System.IO.File]::Move($_ , (Conv-Rename $_.Name)) à cause d'un problème généré par les crochets [] qui sont pris comme wildcard.
Malheureusement je n'arrive pas à utiliser cette fonction (même en ayant lu la doc).
L'appel à cette fonction Move me donne un chemin de ce style:
[code:1]« Impossible de trouver le fichier 'C:\scripts\gestiondroits\Test\Niveau 1 - è_é\NIVEAU 2 ---'. »[/code:1]
Mon string est mis entre quotes et un point apparaît à la fin (je ne sais pas d'où il sort).
La fonction Conv-Rename est une fonction prenant un string en paramètre et retournant le string modifié, rien de spécial.
Merci
+Edit: Voici quelque chose qui peut aider, l'erreur complète pour un dossier.
[code:1]Dossier : C:\scripts\gestiondroits\Test\Niveau 1 - è_é\NIVEAU 2 ---
Dossier modifié : NIVEAU-2-
Exception lors de l'appel de « Move » avec « 2 » argument(s) : « Impossible de trouver le fichier 'C:\scripts\gestiondroits\Test\Niveau 1 - è_é\NIVEAU 2 ---'. »
Au niveau de C:\scripts\gestiondroits\conventionnage.ps1 : 77 Caractère : 35
+ [System.IO.File]::Move <<<< ($_ , (Conv-Rename $_.Name))
+ CategoryInfo : NotSpecified: (:«») [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException[/code:1]<br><br>Message édité par: Brut4lity, à: 9/07/14 15:39
Je travaille sous Powershell 2.0
J'ai créé ce script :
[code:1]
Get-ChildItem -path \"$pathArbo\*\*\",\"$pathArbo\*\" | % {
If ($_.Attributes -eq \"Directory\"«»){
Write-Host \"Dossier : $_\"
Write-Host \"Dossier modifié : $(Conv-Rename $_.Name)\"
#Rename-Item ($_.FullName) (Conv-Rename $_.Name)
[System.IO.File]::Move($_ , (Conv-Rename $_.Name))
}
}
[/code:1]
J'ai remplacé le Rename-Item ($_ , (Conv-Rename $_.Name)) par [System.IO.File]::Move($_ , (Conv-Rename $_.Name)) à cause d'un problème généré par les crochets [] qui sont pris comme wildcard.
Malheureusement je n'arrive pas à utiliser cette fonction (même en ayant lu la doc).
L'appel à cette fonction Move me donne un chemin de ce style:
[code:1]« Impossible de trouver le fichier 'C:\scripts\gestiondroits\Test\Niveau 1 - è_é\NIVEAU 2 ---'. »[/code:1]
Mon string est mis entre quotes et un point apparaît à la fin (je ne sais pas d'où il sort).
La fonction Conv-Rename est une fonction prenant un string en paramètre et retournant le string modifié, rien de spécial.
Merci
+Edit: Voici quelque chose qui peut aider, l'erreur complète pour un dossier.
[code:1]Dossier : C:\scripts\gestiondroits\Test\Niveau 1 - è_é\NIVEAU 2 ---
Dossier modifié : NIVEAU-2-
Exception lors de l'appel de « Move » avec « 2 » argument(s) : « Impossible de trouver le fichier 'C:\scripts\gestiondroits\Test\Niveau 1 - è_é\NIVEAU 2 ---'. »
Au niveau de C:\scripts\gestiondroits\conventionnage.ps1 : 77 Caractère : 35
+ [System.IO.File]::Move <<<< ($_ , (Conv-Rename $_.Name))
+ CategoryInfo : NotSpecified: (:«») [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException[/code:1]<br><br>Message édité par: Brut4lity, à: 9/07/14 15:39
Connexion ou Créer un compte pour participer à la conversation.
- Gabriel
-
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 248
- Remerciements reçus 1
il y a 11 ans 8 mois #17805
par Gabriel
Réponse de Gabriel sur le sujet Re:Changer le nom d'un dossier
et si en lieu et place des varaible tu met les nom en dur, ca marche?
(encapsule tes message d'erreur comme si c'etait du code.)
(encapsule tes message d'erreur comme si c'etait du code.)
Connexion ou Créer un compte pour participer à la conversation.
- Non
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 11 ans 8 mois #17806
par Non
Réponse de Non sur le sujet Re:Changer le nom d'un dossier
Avec
[code:1][System.IO.File]::Move('C:\scripts\gestiondroits\Test\Niveau 1 - è_é\TestRenommage[]()[]','TestRenommage')[/code:1]
J'obtient la même erreur
[code:1]Exception lors de l'appel de « Move » avec « 2 » argument(s) : « Impossible de trouver le fichier 'C:\scripts\gestiondroits\Test\Niveau 1 - è_é\TestRenommage[]()[]'. »[/code:1]
Je pense que c'est de la façon dont j'appelle ma fonction.
Question subsidiaire (une fois que ça marchera) : je veux juste renommer.
Si mes dossiers sont remplis (et il le seront de quelques gigas), je n'ai pas envie de le déplacer, juste renommer.
Je n'ai pas trouvé d'informations sur l'implémentation de Move, je ne sais donc pas s'il prend en compte le fait que j'ai le même chemin et qu'il renomme juste.
EDIT:
C'est réglé avec :
[code:1]Move-Item -LiteralPath ($_.FullName) (\"$(Split-Path $_.FullName)\$(Conv-Rename $_.Name)\"«»)[/code:1]
Malheureusement, ma question subsidiaire sur le fonctionnement du Move reste toujours en suspend ^^ !<br><br>Message édité par: Brut4lity, à: 9/07/14 16:17
[code:1][System.IO.File]::Move('C:\scripts\gestiondroits\Test\Niveau 1 - è_é\TestRenommage[]()[]','TestRenommage')[/code:1]
J'obtient la même erreur
[code:1]Exception lors de l'appel de « Move » avec « 2 » argument(s) : « Impossible de trouver le fichier 'C:\scripts\gestiondroits\Test\Niveau 1 - è_é\TestRenommage[]()[]'. »[/code:1]
Je pense que c'est de la façon dont j'appelle ma fonction.
Question subsidiaire (une fois que ça marchera) : je veux juste renommer.
Si mes dossiers sont remplis (et il le seront de quelques gigas), je n'ai pas envie de le déplacer, juste renommer.
Je n'ai pas trouvé d'informations sur l'implémentation de Move, je ne sais donc pas s'il prend en compte le fait que j'ai le même chemin et qu'il renomme juste.
EDIT:
C'est réglé avec :
[code:1]Move-Item -LiteralPath ($_.FullName) (\"$(Split-Path $_.FullName)\$(Conv-Rename $_.Name)\"«»)[/code:1]
Malheureusement, ma question subsidiaire sur le fonctionnement du Move reste toujours en suspend ^^ !<br><br>Message édité par: Brut4lity, à: 9/07/14 16:17
Connexion ou Créer un compte pour participer à la conversation.
- Gabriel
-
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 248
- Remerciements reçus 1
il y a 11 ans 8 mois #17807
par Gabriel
Réponse de Gabriel sur le sujet Re:Changer le nom d'un dossier
de ce que je sais certaines fonctions ont des problèmes avec les caractèress \"[\" et autres
j'ai eu le problème avec start-process
powershell-scripting.com/index.php?optio...id=17728&catid=5
j'ai eu le problème avec start-process
powershell-scripting.com/index.php?optio...id=17728&catid=5
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 11 ans 8 mois #17809
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Changer le nom d'un dossier
Voir aussi
ce post
.
tonic8 écrit:
Du coup il y a des collisions, et afin de préciser si le parseur doit les interpréter dans le nom de fichier, on utilise (-PATH) sinon (-LITERALPATH).
On peut accéder à certaines méthodes via cette variable automatique :
[code:1]
$ExecutionContext.SessionState.Path|gm
[/code:1]
tonic8 écrit:
PS propose une amélioration des wildcards, l'équipe à choisi les crochets comme délimiteur.de ce que je sais certaines fonctions ont des problèmes avec les caractères \"[\" et autres
Du coup il y a des collisions, et afin de préciser si le parseur doit les interpréter dans le nom de fichier, on utilise (-PATH) sinon (-LITERALPATH).
On peut accéder à certaines méthodes via cette variable automatique :
[code:1]
$ExecutionContext.SessionState.Path|gm
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Non
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 11 ans 8 mois #17810
par Non
Réponse de Non sur le sujet Re:Changer le nom d'un dossier
Passer par Move-Item fonctionne bien pour moi maintenant
.
J'ai testé en remplissant un dossier et en le renommant avec cette fonction et ça a pris moins d'une seconde. Je pense donc qu'il prend juste en compte le renommage.
Donc finalement j'ai répondu à mes questions moi-même
.
Sinon j'ai vu pour l'implémentation du LiteralPath, j'avais pensé à faire une fonction moi-même, mais je préférais trouver une bidouille par manque de temps.
Merci
J'ai testé en remplissant un dossier et en le renommant avec cette fonction et ça a pris moins d'une seconde. Je pense donc qu'il prend juste en compte le renommage.
Donc finalement j'ai répondu à mes questions moi-même
Sinon j'ai vu pour l'implémentation du LiteralPath, j'avais pensé à faire une fonction moi-même, mais je préférais trouver une bidouille par manque de temps.
Merci
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.056 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Changer le nom d'un dossier