Question
Rename une liste de fichiers..+ l'automatisé
- Hamdoun
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 10 ans 9 mois #20102
par Hamdoun
Rename une liste de fichiers..+ l'automatisé a été créé par Hamdoun
Bonjour je suis un jeune étudiant débutant en powershell
Aujourd'hui je voulais effectué un code qui change les noms de fichier a partir d'un fichier texte, ceci a été un succcès (même si j'ai des erreurs que je ne peut réglé)
Le voici donc:
[code:1]#lire liste noms des fichiers + filtre#
$listname = Get-ChildItem 'Y:\Users\HAMDOUN_M\Documents\D\Game Of Throne' -Filter *.bmp
#lire liste fichier txt#
$line = Get-Content 'Y:\Users\HAMDOUN_M\Documents\D\std\prod\recup.txt'
#compter les noms#
$count_listname= $listname.count
#compter les lignes fichier txt#
$count_line = $line.count
#tout compter
#Nombre d'action max (inf_list)#
$count= $count_listname, $count_line
$inf_list= ($count | measure -Min).Minimum
#Var fichier par fichier du répertoire#
$list_split= $listname
$list_split | foreach {
$list_split = $_ -split '*'
}
#Var ligne par ligne du fichier texte#
$line_split = $line
$line_split | foreach {
$line_split = $_ -split '*'
Write-Host $line_split []
}
#Selection des caractères à supprimer#
$erase=Read-Host \"Entrer les caractères à supprimer\"
#Selection des caractères à ajouter#
#Boucle#
$i= 0
while ($i -le $inf_list-1) {
$list_split[$i]| rename-item -newname { $_.name -replace ( $erase , $line_split[$i] )}
$i++
}
#output#
echo \"Fichier répertoire\" $listname \"\"
echo \"Fichier texte \" $line \"\"
echo \"Nombre de fichiers\" $count_listname \"\"
echo \"Nombre de ligne txt\" $count_line \"\"
echo \"Nombre d'action max\" $inf_list \"\"
echo \"Line by line\" $line_split \"\"
echo \"List one by one\" $list_split \"\"
echo \"Caractère a supprimer\" $erase \"\"[/code:1]
J'ai commencé a l'automatisé (\"entré les caractères à supprimé\" que j'ai déjà intégré dans ce code)
Mais je voulais l'automatisé totalement j'ai donc fait un autre code en reprenant celui ci en tant que base.
[code:1]#Déclaration de la Fonction : Select-Folder
function Select-Folder($message='Selectionner un répertoire', $path = 0)
{
$object = New-Object -comObject Shell.Application
$folder = $object.BrowseForFolder(0, $message, 0, $path)
if ($folder -ne $null)
{
$folder.self.Path
}
}
#Fin de la déclaration
#Appel de la Fonction pour afficher la boite de dialogue :
$folderpath=Select-Folder 'Selectionner un répertoire'
#lire liste noms des fichiers + filtre#
$listname = Get-ChildItem $folderpath
#Var fichier par fichier du répertoire#
$list_split= $listname
$list_split | foreach {
$list_split = $_ -split '*'
}
#Selection des caractères à supprimer#
$erase=Read-Host \"Entrer les caractères à supprimer\"
#Selection nombre de ligne#
$nb = Read-Host \"Entrer le nombres de ligne à ajouter\"
#Ligne de remplacement#
$z = 1
$a = 0
while ($a -le $nb-1) {
$list_input[$a] = Read-Host \"Nom du fichier N°\" $z
$z++
$a++
}
#compter les noms#
$count_listname= $listname.count
#Nombre d'action max (inf_list)#
$count= $count_listname, $nb
$inf_list= ($count | measure -Min).Minimum
#Boucle#
$i= 0
while ($i -le $inf_list-1) {
$list_input[$i]| rename-item -newname { $_.name -replace ( $erase , $list_input[$i] )}
$i++
}
#output#
echo \"Fichier répertoire\" $listname \"\"
echo \"Nombre de fichiers\" $count_listname \"\"
echo \"Nombre d'action max\" $inf_list \"\"
echo \"List one by one\" $list_split \"\"
echo \"Caractère a supprimer\" $erase \"\"
echo \"Tableau\" $list_input[0] $list_input[1] $list_input[2]
[/code:1]
Le problèmes se situe donc au niveau du tableau $list_split..
J'ai expliqué tout mon code étape par étape dans l'ordre (merci l'algo')
Si vous avez des questions sur mon code j'y répondrais avec joie.
Et si vous avez une solution j'en serais ravie aussi.
Thank you
Aujourd'hui je voulais effectué un code qui change les noms de fichier a partir d'un fichier texte, ceci a été un succcès (même si j'ai des erreurs que je ne peut réglé)
Le voici donc:
[code:1]#lire liste noms des fichiers + filtre#
$listname = Get-ChildItem 'Y:\Users\HAMDOUN_M\Documents\D\Game Of Throne' -Filter *.bmp
#lire liste fichier txt#
$line = Get-Content 'Y:\Users\HAMDOUN_M\Documents\D\std\prod\recup.txt'
#compter les noms#
$count_listname= $listname.count
#compter les lignes fichier txt#
$count_line = $line.count
#tout compter
#Nombre d'action max (inf_list)#
$count= $count_listname, $count_line
$inf_list= ($count | measure -Min).Minimum
#Var fichier par fichier du répertoire#
$list_split= $listname
$list_split | foreach {
$list_split = $_ -split '*'
}
#Var ligne par ligne du fichier texte#
$line_split = $line
$line_split | foreach {
$line_split = $_ -split '*'
Write-Host $line_split []
}
#Selection des caractères à supprimer#
$erase=Read-Host \"Entrer les caractères à supprimer\"
#Selection des caractères à ajouter#
#Boucle#
$i= 0
while ($i -le $inf_list-1) {
$list_split[$i]| rename-item -newname { $_.name -replace ( $erase , $line_split[$i] )}
$i++
}
#output#
echo \"Fichier répertoire\" $listname \"\"
echo \"Fichier texte \" $line \"\"
echo \"Nombre de fichiers\" $count_listname \"\"
echo \"Nombre de ligne txt\" $count_line \"\"
echo \"Nombre d'action max\" $inf_list \"\"
echo \"Line by line\" $line_split \"\"
echo \"List one by one\" $list_split \"\"
echo \"Caractère a supprimer\" $erase \"\"[/code:1]
J'ai commencé a l'automatisé (\"entré les caractères à supprimé\" que j'ai déjà intégré dans ce code)
Mais je voulais l'automatisé totalement j'ai donc fait un autre code en reprenant celui ci en tant que base.
[code:1]#Déclaration de la Fonction : Select-Folder
function Select-Folder($message='Selectionner un répertoire', $path = 0)
{
$object = New-Object -comObject Shell.Application
$folder = $object.BrowseForFolder(0, $message, 0, $path)
if ($folder -ne $null)
{
$folder.self.Path
}
}
#Fin de la déclaration
#Appel de la Fonction pour afficher la boite de dialogue :
$folderpath=Select-Folder 'Selectionner un répertoire'
#lire liste noms des fichiers + filtre#
$listname = Get-ChildItem $folderpath
#Var fichier par fichier du répertoire#
$list_split= $listname
$list_split | foreach {
$list_split = $_ -split '*'
}
#Selection des caractères à supprimer#
$erase=Read-Host \"Entrer les caractères à supprimer\"
#Selection nombre de ligne#
$nb = Read-Host \"Entrer le nombres de ligne à ajouter\"
#Ligne de remplacement#
$z = 1
$a = 0
while ($a -le $nb-1) {
$list_input[$a] = Read-Host \"Nom du fichier N°\" $z
$z++
$a++
}
#compter les noms#
$count_listname= $listname.count
#Nombre d'action max (inf_list)#
$count= $count_listname, $nb
$inf_list= ($count | measure -Min).Minimum
#Boucle#
$i= 0
while ($i -le $inf_list-1) {
$list_input[$i]| rename-item -newname { $_.name -replace ( $erase , $list_input[$i] )}
$i++
}
#output#
echo \"Fichier répertoire\" $listname \"\"
echo \"Nombre de fichiers\" $count_listname \"\"
echo \"Nombre d'action max\" $inf_list \"\"
echo \"List one by one\" $list_split \"\"
echo \"Caractère a supprimer\" $erase \"\"
echo \"Tableau\" $list_input[0] $list_input[1] $list_input[2]
[/code:1]
Le problèmes se situe donc au niveau du tableau $list_split..
J'ai expliqué tout mon code étape par étape dans l'ordre (merci l'algo')
Si vous avez des questions sur mon code j'y répondrais avec joie.
Et si vous avez une solution j'en serais ravie aussi.
Thank you
Connexion ou Créer un compte pour participer à la conversation.
- Axel
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 176
- Remerciements reçus 0
il y a 10 ans 9 mois #20103
par Axel
Réponse de Axel sur le sujet Re:Rename une liste de fichiers..+ l'automatisé
Salut, tu travaille avec qu'elle version ?
Connexion ou Créer un compte pour participer à la conversation.
- Hamdoun
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 10 ans 9 mois #20105
par Hamdoun
Réponse de Hamdoun sur le sujet Re:Rename une liste de fichiers..+ l'automatisé
Salut
Sur la version 2.0.
Je n'ai pas cherché a voir ce qu'apporte les différentes versions donc je suis ouvert à toutes informations.<br><br>Message édité par: mhamdoun, à: 15/06/15 11:40
Sur la version 2.0.
Je n'ai pas cherché a voir ce qu'apporte les différentes versions donc je suis ouvert à toutes informations.<br><br>Message édité par: mhamdoun, à: 15/06/15 11:40
Connexion ou Créer un compte pour participer à la conversation.
- Axel
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 176
- Remerciements reçus 0
il y a 10 ans 9 mois #20107
par Axel
Réponse de Axel sur le sujet Re:Rename une liste de fichiers..+ l'automatisé
je suis également sous V2 mais je suis débutant donc difficile de t'aider
Connexion ou Créer un compte pour participer à la conversation.
- Hamdoun
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 10 ans 9 mois #20108
par Hamdoun
Réponse de Hamdoun sur le sujet Re:Rename une liste de fichiers..+ l'automatisé
D'accord merci quand même, j'attend quelqu'un de plus expérimenter du coup
Connexion ou Créer un compte pour participer à la conversation.
- Richard Lazaro
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 530
- Remerciements reçus 0
il y a 10 ans 9 mois #20125
par Richard Lazaro
Think-MS : (Get-Life).Days | %{ Learn-More }
\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein
Réponse de Richard Lazaro sur le sujet Re:Rename une liste de fichiers..+ l'automatisé
Bonjour,
Alors j'ai peut être mal lu mais il ne me semble pas que tu expliques ton problème.
Tout d'abord :
#Var fichier par fichier du répertoire#
$list_split= $listname
$list_split | foreach {
$list_split = $_ -split '*'
}
Pourquoi mettre $listname dans $list_split, si c'est pour redefinir a chaque fois $list_split.
De plus, alors que tu fais un Get-ChildItem (pour faire ton traitement sur tous les fichiers de ton répertoire), ton $list_split ne va contenir qu'un seul fichier au final (le dernier retournée par Get-ChildItem)
De plus, je pense que avec ton split tu souhaites récupérer un tableau de caractère non ? Alors déjà, chez moi la commande $_ -split '*' ne fonctionne pas :
[code:1]
PS C:\> \"toto\" -split '*'
parsing \"*\" - Quantifier {x,y} following nothing.
At line:1 char:1
+ \"toto\" -split '*'
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:«») [], ArgumentException
+ FullyQualifiedErrorId : System.ArgumentException
[/code:1]
La facon la plus propre de faire ça est, je pense, d'utiliser la méthode ToCharArray()
[code:1]
PS C:\> ('toto').ToCharArray()
t
o
t
o
[/code:1]
Je pense aussi que tu as un problème d'organisation algorithmique, puis j'arrive pas trop a comprendre ce que tu cherches a faire avec ton script (ligne a ajouter ?? action max ??)
Bref, soit je suis pas réveillé soit va me faloir plus de détails pour comprendre ^^
Alors j'ai peut être mal lu mais il ne me semble pas que tu expliques ton problème.
Tout d'abord :
#Var fichier par fichier du répertoire#
$list_split= $listname
$list_split | foreach {
$list_split = $_ -split '*'
}
Pourquoi mettre $listname dans $list_split, si c'est pour redefinir a chaque fois $list_split.
De plus, alors que tu fais un Get-ChildItem (pour faire ton traitement sur tous les fichiers de ton répertoire), ton $list_split ne va contenir qu'un seul fichier au final (le dernier retournée par Get-ChildItem)
De plus, je pense que avec ton split tu souhaites récupérer un tableau de caractère non ? Alors déjà, chez moi la commande $_ -split '*' ne fonctionne pas :
[code:1]
PS C:\> \"toto\" -split '*'
parsing \"*\" - Quantifier {x,y} following nothing.
At line:1 char:1
+ \"toto\" -split '*'
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:«») [], ArgumentException
+ FullyQualifiedErrorId : System.ArgumentException
[/code:1]
La facon la plus propre de faire ça est, je pense, d'utiliser la méthode ToCharArray()
[code:1]
PS C:\> ('toto').ToCharArray()
t
o
t
o
[/code:1]
Je pense aussi que tu as un problème d'organisation algorithmique, puis j'arrive pas trop a comprendre ce que tu cherches a faire avec ton script (ligne a ajouter ?? action max ??)
Bref, soit je suis pas réveillé soit va me faloir plus de détails pour comprendre ^^
Think-MS : (Get-Life).Days | %{ Learn-More }
\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.053 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Rename une liste de fichiers..+ l'automatisé