Powershell boucle copie help

skier-dawg Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
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   Statut Membre Dernière intervention  
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,
commence par ajouter du debug, en regardant, par exemple ce que donne un
Write-Output $Files[$i].Length 

avant tes if
0