Powershell boucle copie help

skier-dawg Messages postés 2 Statut Membre -  
jordane45 Messages postés 30426 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!

1 réponse

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

      avant tes if
      0