Question
Manipulation Fichier et REGEX
- Yassin
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 12 ans 10 mois #14789
par Yassin
Manipulation Fichier et REGEX a été créé par Yassin
Bonjour à tous,étant donné que je ne maitrise pas bien le powershell,j'aimerais savoir si vous auriez une solution.
J'aimerais créer un petit script simple qui irait lire le nom de plusieurs fichiers et les renommerait de façon uniforme.
Par exemple j'ai un dossier où sont stockés mes épisodes d'une série, 1 fichier se nomme \"HIMYM 1.mp4\" ,l'autre \"How I Met Your Mother 2\",l'autre \"How.I.Met 3\".
J'aimerais tous les nommer de façon uniforme selon \" How I Met Your Mother [0-9]\"se lon leur numéro,donc créer une regex qui irait prendre seulement l'entier dans le nom du fichier et le renommerait en fonction de cet entier.
Merci d'avance pour vos réponses.
J'aimerais créer un petit script simple qui irait lire le nom de plusieurs fichiers et les renommerait de façon uniforme.
Par exemple j'ai un dossier où sont stockés mes épisodes d'une série, 1 fichier se nomme \"HIMYM 1.mp4\" ,l'autre \"How I Met Your Mother 2\",l'autre \"How.I.Met 3\".
J'aimerais tous les nommer de façon uniforme selon \" How I Met Your Mother [0-9]\"se lon leur numéro,donc créer une regex qui irait prendre seulement l'entier dans le nom du fichier et le renommerait en fonction de cet entier.
Merci d'avance pour vos réponses.
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 12 ans 10 mois #14800
par Philippe
Réponse de Philippe sur le sujet Re:Manipulation Fichier et REGEX
salut NeoPegasus
je te donne la partie regex (c'est une des methodes possible)
je part sur le principe que tous tes fichiers ont une extention (.mp4,.avi,...).
j'ai essayé de découper chaque étape pour que tu comprenne :
sur l'exemple \"How.I.Met 3.avi\"
[code:1]# je decoupe le nom du fichier avec les points
$t = $s.split(\".\"«») # (soit [How] [Met 3] [avi])
# je pointe sur l'avant dernier element (4 elements moins l'extention, et encore moins un car \"un tableau commence par zero\")
$p = ($t).Length - 2 (soit [Met 3])
# j'isole l'entier qui ce trouve a la fin
$t[$p] -match \"(\d*$)\"
# le resultat est ici
$matches[1]
# je recree le titre !!!!
$titre = \"How I Met Your Mother \" + $matches[1][/code:1]
je te laise faire la liste des fichiers et la boucle, pour le moment
tu trouvera des exemples partout sur le net
mais si tu a besoin d'aide ....<br><br>Message édité par: 6ratgus, à: 7/05/13 11:08
je te donne la partie regex (c'est une des methodes possible)
je part sur le principe que tous tes fichiers ont une extention (.mp4,.avi,...).
j'ai essayé de découper chaque étape pour que tu comprenne :
sur l'exemple \"How.I.Met 3.avi\"
[code:1]# je decoupe le nom du fichier avec les points
$t = $s.split(\".\"«») # (soit [How] [Met 3] [avi])
# je pointe sur l'avant dernier element (4 elements moins l'extention, et encore moins un car \"un tableau commence par zero\")
$p = ($t).Length - 2 (soit [Met 3])
# j'isole l'entier qui ce trouve a la fin
$t[$p] -match \"(\d*$)\"
# le resultat est ici
$matches[1]
# je recree le titre !!!!
$titre = \"How I Met Your Mother \" + $matches[1][/code:1]
je te laise faire la liste des fichiers et la boucle, pour le moment
tu trouvera des exemples partout sur le net
mais si tu a besoin d'aide ....<br><br>Message édité par: 6ratgus, à: 7/05/13 11:08
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 12 ans 10 mois #14804
par Philippe
Réponse de Philippe sur le sujet Re:Manipulation Fichier et REGEX
Bon j'ai pris quelque minutes pour ces quelques lignes
:
[code:1]$newtitre = \"How I Met Your Mother \"
Get-ChildItem -Path '.\temp' | Foreach {
$ok = (($_.name).split(\".\"«»))[(($_.name).split(\".\"«»)).Length - 2] -match \"(\d+$)\"
if ($ok)
{
$titre = $newtitre + $matches[1] + $_.Extension
Write-Host $_.name \" --> \" $titre
rename-item $_.fullname -newname $titre
}
else
{
Write-Host \"+++ erreur de format de nom de fichier : $_\"
}
}
[/code:1]
il te reste plus beaucoup a faire pour qu'il s'adapte a toutes les series que tu aime !!!
[code:1]$newtitre = \"How I Met Your Mother \"
Get-ChildItem -Path '.\temp' | Foreach {
$ok = (($_.name).split(\".\"«»))[(($_.name).split(\".\"«»)).Length - 2] -match \"(\d+$)\"
if ($ok)
{
$titre = $newtitre + $matches[1] + $_.Extension
Write-Host $_.name \" --> \" $titre
rename-item $_.fullname -newname $titre
}
else
{
Write-Host \"+++ erreur de format de nom de fichier : $_\"
}
}
[/code:1]
il te reste plus beaucoup a faire pour qu'il s'adapte a toutes les series que tu aime !!!
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 12 ans 10 mois #14805
par Philippe
Réponse de Philippe sur le sujet Re:Manipulation Fichier et REGEX
le meme sans les splits[code:1]$newtitre = \"How I Met Your Mother \"
Get-ChildItem -Path '.\temp' | Foreach {
$ok = $_.basename -match \"(\d+$)\"
if ($ok)
{
$titre = $newtitre + $matches[1] + $_.Extension
Write-Host $_.name \" --> \" $titre
rename-item $_.fullname -newname $titre
}
else
{
Write-Host \"+++ erreur de format de nom de fichier : $_\"
}
}[/code:1]
Get-ChildItem -Path '.\temp' | Foreach {
$ok = $_.basename -match \"(\d+$)\"
if ($ok)
{
$titre = $newtitre + $matches[1] + $_.Extension
Write-Host $_.name \" --> \" $titre
rename-item $_.fullname -newname $titre
}
else
{
Write-Host \"+++ erreur de format de nom de fichier : $_\"
}
}[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Yassin
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 12 ans 10 mois #14817
par Yassin
Réponse de Yassin sur le sujet Re:Manipulation Fichier et REGEX
Super vos scripts sont parfaits!Il suffit de réadapter le split'(soit avec un point soit un espace)et le length et ça passe.Par contre les fichiers commençant par le caractère [ sont impossible à renommer.En effet,il me sort cette erreur \"Rename-Item : Impossible de renommer l'élément situé à l'emplacement « C\[test]3.mp4 »
Auriez-vous une idée?
Auriez-vous une idée?
Connexion ou Créer un compte pour participer à la conversation.
- SiSMik
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 492
- Remerciements reçus 0
il y a 12 ans 10 mois #14826
par SiSMik
Réponse de SiSMik sur le sujet Re:Manipulation Fichier et REGEX
Salut,
Essayes
[code:1]rename-item -LiteralPath $_.fullname -newname $titre[/code:1]
@+
Essayes
[code:1]rename-item -LiteralPath $_.fullname -newname $titre[/code:1]
@+
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.050 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Manipulation Fichier et REGEX