Question
[Résolu] Concaténation et regroupement par 4
- Guardiola gabriel
-
Auteur du sujet
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 229
- Remerciements reçus 0
il y a 5 ans 6 mois #25088
par Guardiola gabriel
[Résolu] Concaténation et regroupement par 4 a été créé par Guardiola gabriel
bonsoir a toutes et tous
j'aimerais regroupe des fichier par 4 (il s'agit d'un ensemble de fichier image qui marche par 4 mais il y en a plus de 700). mais la logique est la meme si on l'applique a une chaine de caractères:
on a \"abcdefghijklmnopqrstuvwxyz\"
et j'aimerais faire une boucle qui produise cela:
- \"abcd\"
- \"efgh\"
- \"ijkl\"
- \"mnop\"
- etc...
je sais pas trop par ou commencer, il y a le do until mais il faut l'imbriquer dans une autre boucle.
merci de vos lumières
Tonic8<br><br>Message édité par: Arnaud, à: 15/03/18 16:12
j'aimerais regroupe des fichier par 4 (il s'agit d'un ensemble de fichier image qui marche par 4 mais il y en a plus de 700). mais la logique est la meme si on l'applique a une chaine de caractères:
on a \"abcdefghijklmnopqrstuvwxyz\"
et j'aimerais faire une boucle qui produise cela:
- \"abcd\"
- \"efgh\"
- \"ijkl\"
- \"mnop\"
- etc...
je sais pas trop par ou commencer, il y a le do until mais il faut l'imbriquer dans une autre boucle.
merci de vos lumières
Tonic8<br><br>Message édité par: Arnaud, à: 15/03/18 16:12
Connexion ou Créer un compte pour participer à la conversation.
- Guardiola gabriel
-
Auteur du sujet
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 229
- Remerciements reçus 0
il y a 5 ans 6 mois #25089
par Guardiola gabriel
Réponse de Guardiola gabriel sur le sujet [Resolu]:concatenation regroupement par 4
Bonsoir
bon j'ai trouvé, mais je trouve le code un peu moche
on fait 2 boucles do/until l'une sur l'autre
[code:1]
$chemin = \"D:\temp\"
$listeFichiers = dir $chemin -File | sort name | select -first 32
$TotalFichiers = $listeFichiers.Length
$NbreRegroupe = 4
$compteurTotal = 0
do {
write-host (\"chiffre {0} sur {1}\" -f $compteurTotal,$TotalFichiers)
$listeFichiersRegroupe = $Null
$compteurInterne = 0
do {
[string[]]$listeFichiersRegroupe += ('\"{0}\"' -f $listeFichiers[$compteurTotal])
$compteurTotal++
$compteurInterne++
}
until ($compteurInterne -eq $NbreRegroupe)
write-host ($listeFichiersRegroupe -join \",\"«»)
}
until ($compteurTotal -eq $TotalFichiers)
[/code:1]
bon j'ai trouvé, mais je trouve le code un peu moche

on fait 2 boucles do/until l'une sur l'autre
[code:1]
$chemin = \"D:\temp\"
$listeFichiers = dir $chemin -File | sort name | select -first 32
$TotalFichiers = $listeFichiers.Length
$NbreRegroupe = 4
$compteurTotal = 0
do {
write-host (\"chiffre {0} sur {1}\" -f $compteurTotal,$TotalFichiers)
$listeFichiersRegroupe = $Null
$compteurInterne = 0
do {
[string[]]$listeFichiersRegroupe += ('\"{0}\"' -f $listeFichiers[$compteurTotal])
$compteurTotal++
$compteurInterne++
}
until ($compteurInterne -eq $NbreRegroupe)
write-host ($listeFichiersRegroupe -join \",\"«»)
}
until ($compteurTotal -eq $TotalFichiers)
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6294
- Remerciements reçus 67
il y a 5 ans 6 mois #25091
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:[Resolu]:concatenation regroupement par 4
Salut,
tu peux récupérer les éléments du tableau par 'tranche' de 4 :
[code:1]
$t=1..12
$max=$T.Length
$BorneInf=-1
$BorneSup=-1
Do {
$borneInf=$BorneSup+1
$BorneSup +=4
$T[$borneInf..$BorneSup]
Write-warning \"BorneInf=$BorneInf BorneSup=$BorneSup\"
} until ($BorneSup+1 -eq $max)
Write-warning \"BorneInf=$BorneInf BorneSup+1=$($BorneSup+1) Max=$Max\"
[/code:1]
Il y a aussi ceci mais cela crée un tableau à chaque affectation:
[code:1]
$t=1..12
$un,$deux,$T=$T
$un
$deux
$T
[/code:1]
tu peux récupérer les éléments du tableau par 'tranche' de 4 :
[code:1]
$t=1..12
$max=$T.Length
$BorneInf=-1
$BorneSup=-1
Do {
$borneInf=$BorneSup+1
$BorneSup +=4
$T[$borneInf..$BorneSup]
Write-warning \"BorneInf=$BorneInf BorneSup=$BorneSup\"
} until ($BorneSup+1 -eq $max)
Write-warning \"BorneInf=$BorneInf BorneSup+1=$($BorneSup+1) Max=$Max\"
[/code:1]
Il y a aussi ceci mais cela crée un tableau à chaque affectation:
[code:1]
$t=1..12
$un,$deux,$T=$T
$un
$deux
$T
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Guardiola gabriel
-
Auteur du sujet
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 229
- Remerciements reçus 0
il y a 5 ans 6 mois #25093
par Guardiola gabriel
Réponse de Guardiola gabriel sur le sujet Re:[Resolu]:concatenation regroupement par 4
ah effectivement c'est plus propres en plus la on peut mettre des controles plus facilement
genre on cherche a faire des regroupement par 4 mais il reste que 3 fichier a la fin (4,4 et finalement 3)
etc..
Merci Laurent.
genre on cherche a faire des regroupement par 4 mais il reste que 3 fichier a la fin (4,4 et finalement 3)
etc..
Merci Laurent.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6294
- Remerciements reçus 67
il y a 5 ans 6 mois #25094
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:[Resolu]:concatenation regroupement par 4
tonic8 écrit:
[code:1]
until ($BorneSup+1 -ge $max)
[/code:1]
avec $t=1..14 ou $t=1..10 ça ne pose pas de pb.
SAUF si on modifie Set-StrictMode -Version latest, dans ce cas PS déclenche une exception pour le cas où les indices sont hors du tableau :
L'index se trouve en dehors des limites du tableau.
Oui j'y ai pensé (c'est pour cela que j'ai placé des 'traces'), la syntaxe proposée prend en compte ce cas, il faut modifier la clause until :genre on cherche a faire des regroupement par 4 mais il reste que 3 fichier a la fin (4,4 et finalement 3)
[code:1]
until ($BorneSup+1 -ge $max)
[/code:1]
avec $t=1..14 ou $t=1..10 ça ne pose pas de pb.
SAUF si on modifie Set-StrictMode -Version latest, dans ce cas PS déclenche une exception pour le cas où les indices sont hors du tableau :
L'index se trouve en dehors des limites du tableau.
Tutoriels PowerShell
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] Concaténation et regroupement par 4