Powershell boucle copie help

Fermé
skier-dawg Messages postés 2 Date d'inscription mardi 12 décembre 2017 Statut Membre Dernière intervention 12 décembre 2017 - 12 déc. 2017 à 04:19
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 12 déc. 2017 à 08:26
j'ai besoin d'aide dans ma loop en powershell, mon script doit faire ceci :

Votre travail consiste à écrire un fichier script PowerShell. Ce fichier permettra le classement des fichiers selon leur taille sur disque.

Dans le dossier où sera exécuté le script, vous devez calculer la taille moyenne des fichiers présent dans le dossier.
Vous devez ensuite créer au minimum deux dossiers portant les noms : Fichiers_inférieurs_à_la_moyenne et Fichiers_supérieurs_à_la_moyenne.

Vous devez maintenant copier les fichiers ayant une taille inférieure à la moyenne dans le bon dossier et ceux supérieurs dans l’autre dossier.

Advenant que certains fichiers soit exactement de la taille de la moyenne, vous devez créer un autre dossier nommé Fichiers_moyens et les copier dans ce dossier

Lorsque terminé, vous devez faire afficher à l’écran le contenu des dossiers créés triés en ordre de taille du contenu.

donc, jusqu'à maintenant, j'ai cela de fait :
$Files = Get-ChildItem -Path $PSScriptRoot -File
#calcul moyenne dossiers
$moy = ((Get-ChildItem -Path $PSscriptroot | Measure-Object -Property Length -Average).Average/1Kb)

#sortir la moyenne
Write-Output $moy

#creer le repertoire inferieurs
New-Item -Path $PSscriptroot -Name Fichiers_inferieurs_à_la_moyenne -type directory -Force
#creer le repertoires superieurs
New-Item -Path $PSscriptroot -Name Fichiers_superieurs_à_la_moyenne -type directory -Force

#classement des fichiers selon leur taille

ForEach ($file in $PSscriptroot)
{
if ( $_ -lt $moy )
{
Copy-Item -Path $PSscriptroot -Destination .\Fichiers_inferieurs_à_la_moyenne
}
}

donc je ne sais pas comment partir ma boucle, en esperant vous pouvez m'aider

merci!
A voir également:

1 réponse

skier-dawg Messages postés 2 Date d'inscription mardi 12 décembre 2017 Statut Membre Dernière intervention 12 décembre 2017
Modifié le 12 déc. 2017 à 08:24
update : voici mon code, sauf que tout va dans superieur a la moyenne :(
$Files = Get-ChildItem -Path $PSScriptRoot -File
#calcul moyenne dossiers
$moy = ((Get-ChildItem -Path $PSScriptroot  | Measure-Object -Property Length -Average).Average/1Kb)

#sortir la moyenne
Write-Output "votre moyenne est la suivante :"$moy

#creer le repertoire inferieurs 
New-Item -Path $PSscriptroot  -Name Fichiers_inferieurs_à_la_moyenne -type directory -Force
#creer le repertoires superieurs
New-Item -Path $PSscriptroot  -Name Fichiers_superieurs_à_la_moyenne -type directory -Force

#classement des fichiers selon leur taille

For($i = 0;$i -lt $Files.Count;$i++)
{
if ($Files[$i].Length -lt $moy)
{
Copy-Item $Files[$i].FullName -Destination "$PSScriptRoot\Fichiers_inferieurs_à_la_moyenne"
}
elseif ($Files[$i].Length -gt $moy)
{
Copy-Item $Files[$i].FullName -Destination "$PSScriptRoot\Fichiers_superieurs_à_la_moyenne"
}
}


EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).

Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.
Jordane45
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
12 déc. 2017 à 08:26
Bonjour,
commence par ajouter du debug, en regardant, par exemple ce que donne un
Write-Output $Files[$i].Length 

avant tes if
0