Question [Résolu] Concaténation et regroupement par 4

Plus d'informations
il y a 6 ans 1 mois #25088 par 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

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 6 ans 1 mois #25089 par Gabriel
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 = \&quot;D:\temp\&quot;

$listeFichiers = dir $chemin -File | sort name | select -first 32

$TotalFichiers = $listeFichiers.Length

$NbreRegroupe = 4
$compteurTotal = 0

do {
write-host (\&quot;chiffre {0} sur {1}\&quot; -f $compteurTotal,$TotalFichiers)

$listeFichiersRegroupe = $Null
$compteurInterne = 0
do {
[string[]]$listeFichiersRegroupe += ('\&quot;{0}\&quot;' -f $listeFichiers[$compteurTotal])
$compteurTotal++
$compteurInterne++
}
until ($compteurInterne -eq $NbreRegroupe)

write-host ($listeFichiersRegroupe -join \&quot;,\&quot;«»)

}

until ($compteurTotal -eq $TotalFichiers)

[/code:1]

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 6 ans 1 mois #25091 par Laurent Dardenne
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 \&quot;BorneInf=$BorneInf BorneSup=$BorneSup\&quot;

} until ($BorneSup+1 -eq $max)
Write-warning \&quot;BorneInf=$BorneInf BorneSup+1=$($BorneSup+1) Max=$Max\&quot;
[/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.

Plus d'informations
il y a 6 ans 1 mois #25093 par Gabriel
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.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 6 ans 1 mois #25094 par Laurent Dardenne
tonic8 écrit:

genre on cherche a faire des regroupement par 4 mais il reste que 3 fichier a la fin (4,4 et finalement 3)

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 :
[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.076 secondes
Propulsé par Kunena