Question
[Résolu] Aide pour script de création de dossier
- Hugo Poi
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 16 ans 3 semaines #6231
par Hugo Poi
[Résolu] Aide pour script de création de dossier a été créé par Hugo Poi
Bonjour,
Je débute en Powershell et j'aimerais creer un script pour faire dans l'ordre :
-Créer un dossier portant le nom de chaque fichier (sans l'extension) présent dans le dossier en cours
-Puis déplacer chaque fichier dans le dossier correspondant
Pour créer les dossiers j'ai un début:
[code:1]Get-ChildItem *.* | New-Item -type \"directory\"[/code:1]
mais il manque quelquechose pour editer le nom (pour enlever l'extension) qui est pipe ,peut-etre -replace(\".\",\"\")
si un expert pouvez m'expliquer
comment pipe un nom modifier a partir d'un Get-ChildItem<br><br>Message édité par: Arnaud, à: 1/03/10 23:29
Je débute en Powershell et j'aimerais creer un script pour faire dans l'ordre :
-Créer un dossier portant le nom de chaque fichier (sans l'extension) présent dans le dossier en cours
-Puis déplacer chaque fichier dans le dossier correspondant
Pour créer les dossiers j'ai un début:
[code:1]Get-ChildItem *.* | New-Item -type \"directory\"[/code:1]
mais il manque quelquechose pour editer le nom (pour enlever l'extension) qui est pipe ,peut-etre -replace(\".\",\"\")
si un expert pouvez m'expliquer
Connexion ou Créer un compte pour participer à la conversation.
- Vara
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 30
- Remerciements reçus 0
il y a 16 ans 3 semaines #6236
par Vara
Réponse de Vara sur le sujet Re:Aide pour script de creation de dossier
Salut,
Tu peux déjà décortiquer cette commande...
[code:1]Get-ChildItem | foreach $_.name {$_.name.split(\".\"«»);New-Item $_.name[0] -type \"directory\";move-item $_.name -destination $_.name[0]}[/code:1]
1 - Get-childitem récupère le contenu du répertoire
2 - pour chaque éléments, tu split le nom sur le \".\", tu créés un nouveau répertoire sur la base du split et tu déplaces chaque éléments dans les répertoires nouvellement créés.
Attention, si le nom des fichiers contient plus d'un \".\" il faut que tu trouves une autre solution que le split.
Tu peux déjà décortiquer cette commande...
[code:1]Get-ChildItem | foreach $_.name {$_.name.split(\".\"«»);New-Item $_.name[0] -type \"directory\";move-item $_.name -destination $_.name[0]}[/code:1]
1 - Get-childitem récupère le contenu du répertoire
2 - pour chaque éléments, tu split le nom sur le \".\", tu créés un nouveau répertoire sur la base du split et tu déplaces chaque éléments dans les répertoires nouvellement créés.
Attention, si le nom des fichiers contient plus d'un \".\" il faut que tu trouves une autre solution que le split.
Connexion ou Créer un compte pour participer à la conversation.
- Hugo Poi
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 16 ans 3 semaines #6237
par Hugo Poi
Réponse de Hugo Poi sur le sujet Re:Aide pour script de creation de dossier
Je viens de tester quelques truc et j'ai reussi a faire ça :
[code:1]PS E:\test script> Get-ChildItem *.* |foreach $_.name {$_.name.split(\".\"«»)[0] }
film (1)
film (10)
film (11)
film (12)
film (13)
film (14)
film (15)
film (2)
film (3)
film (4)
film (5)
film (6)
film (7)
film (8)
film (9)
Nouveau document texte[/code:1]
mais je ne peux pas le transmettre comme cela :
[code:1]PS E:\test script> Get-ChildItem *.* |foreach $_.name {$_.name.split(\".\"«»)[0] } | New-Item -type \"directory\"
New-Item : L'objet d'entrée ne peut pas être lié, car il ne contient pas les informations requises pour lier tous les p
aramètres obligatoires : Path
Au niveau de ligne : 1 Caractère : 71
+ Get-ChildItem *.* |foreach $_.name {$_.name.split(\".\"«»)[0] } | New-Item <<<< -type \"directory\"
+ CategoryInfo : InvalidArgument: (film (1):«»String) [New-Item], ParameterBindingException
+ FullyQualifiedErrorId : InputObjectMissingMandatory,Microsoft.PowerShell.Commands.NewItemCommand
New-Item : L'objet d'entrée ne peut pas être lié, car il ne contient pas les informations requises pour lier tous les p
aramètres obligatoires : Path
Au niveau de ligne : 1 Caractère : 71
+ Get-ChildItem *.* |foreach $_.name {$_.name.split(\".\"«»)[0] } | New-Item <<<< -type \"directory\"
+ CategoryInfo : InvalidArgument: (film (10):«»String) [New-Item], ParameterBindingException
+ FullyQualifiedErrorId : InputObjectMissingMandatory,Microsoft.PowerShell.Commands.NewItemCommand
.......[/code:1]
ce n'est pas le type d'objet que la commande New-Item attends
[code:1]PS E:\test script> Get-ChildItem *.* |foreach $_.name {$_.name.split(\".\"«»)[0] }
film (1)
film (10)
film (11)
film (12)
film (13)
film (14)
film (15)
film (2)
film (3)
film (4)
film (5)
film (6)
film (7)
film (8)
film (9)
Nouveau document texte[/code:1]
mais je ne peux pas le transmettre comme cela :
[code:1]PS E:\test script> Get-ChildItem *.* |foreach $_.name {$_.name.split(\".\"«»)[0] } | New-Item -type \"directory\"
New-Item : L'objet d'entrée ne peut pas être lié, car il ne contient pas les informations requises pour lier tous les p
aramètres obligatoires : Path
Au niveau de ligne : 1 Caractère : 71
+ Get-ChildItem *.* |foreach $_.name {$_.name.split(\".\"«»)[0] } | New-Item <<<< -type \"directory\"
+ CategoryInfo : InvalidArgument: (film (1):«»String) [New-Item], ParameterBindingException
+ FullyQualifiedErrorId : InputObjectMissingMandatory,Microsoft.PowerShell.Commands.NewItemCommand
New-Item : L'objet d'entrée ne peut pas être lié, car il ne contient pas les informations requises pour lier tous les p
aramètres obligatoires : Path
Au niveau de ligne : 1 Caractère : 71
+ Get-ChildItem *.* |foreach $_.name {$_.name.split(\".\"«»)[0] } | New-Item <<<< -type \"directory\"
+ CategoryInfo : InvalidArgument: (film (10):«»String) [New-Item], ParameterBindingException
+ FullyQualifiedErrorId : InputObjectMissingMandatory,Microsoft.PowerShell.Commands.NewItemCommand
.......[/code:1]
ce n'est pas le type d'objet que la commande New-Item attends
Connexion ou Créer un compte pour participer à la conversation.
- Vara
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 30
- Remerciements reçus 0
il y a 16 ans 3 semaines #6238
par Vara
Réponse de Vara sur le sujet Re:Aide pour script de creation de dossier
Re,
Il faut que créer les répertoires et déplacer les fichiers dans le ForEach.
Il ne faut pas passer par un nouveau pipe '|'.
Il faut que créer les répertoires et déplacer les fichiers dans le ForEach.
Il ne faut pas passer par un nouveau pipe '|'.
Connexion ou Créer un compte pour participer à la conversation.
- Hugo Poi
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 16 ans 3 semaines #6239
par Hugo Poi
Réponse de Hugo Poi sur le sujet Re:Aide pour script de creation de dossier
exact comme cela pour créer les dossiers :
[code:1] Get-ChildItem *.* |foreach $_.name {New-Item -Name $_.name.split(\".\"«»)[0] -type \"directory\"}[/code:1]
[code:1] Get-ChildItem *.* |foreach $_.name {New-Item -Name $_.name.split(\".\"«»)[0] -type \"directory\"}[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Hugo Poi
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 16 ans 3 semaines #6240
par Hugo Poi
Réponse de Hugo Poi sur le sujet Re:Aide pour script de creation de dossier
[code:1]PS E:\test script> Get-ChildItem *.* | foreach { New-Item -Name $_.Name.split(\".\"«»)[0] -type \"directory\" ; Move-Item $_.N
ame -Destination $_.Name.split(\".\"«»)[0] }
Répertoire : E:\test script
Mode LastWriteTime Length Name
----
----
d---- 23/02/2010 18:18 film (1)
d---- 23/02/2010 18:18 film (10)
d---- 23/02/2010 18:18 film (11)
d---- 23/02/2010 18:18 film (12)
d---- 23/02/2010 18:18 film (2)
d---- 23/02/2010 18:18 film (3)
d---- 23/02/2010 18:18 film (4)
d---- 23/02/2010 18:18 film (5)
d---- 23/02/2010 18:18 film (6)
d---- 23/02/2010 18:18 film (7)
d---- 23/02/2010 18:18 film (8)
d---- 23/02/2010 18:18 film (9)
PS E:\test script>[/code:1]
Voila j'ai réussi à faire exactement ce que je voulais
ame -Destination $_.Name.split(\".\"«»)[0] }
Répertoire : E:\test script
Mode LastWriteTime Length Name
----
----
d---- 23/02/2010 18:18 film (1)
d---- 23/02/2010 18:18 film (10)
d---- 23/02/2010 18:18 film (11)
d---- 23/02/2010 18:18 film (12)
d---- 23/02/2010 18:18 film (2)
d---- 23/02/2010 18:18 film (3)
d---- 23/02/2010 18:18 film (4)
d---- 23/02/2010 18:18 film (5)
d---- 23/02/2010 18:18 film (6)
d---- 23/02/2010 18:18 film (7)
d---- 23/02/2010 18:18 film (8)
d---- 23/02/2010 18:18 film (9)
PS E:\test script>[/code:1]
Voila j'ai réussi à faire exactement ce que je voulais
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.048 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Aide pour script de création de dossier