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 -
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!
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:
- Powershell boucle copie help
- Copie cachée - Guide
- Super copie - Télécharger - Gestion de fichiers
- Copie écran samsung - Guide
- Copie disque dur - Guide
- Copie rapide - Télécharger - Gestion de fichiers
1 réponse
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 :ICIMerci d'y penser dans tes prochains messages.Jordane45 |
commence par ajouter du debug, en regardant, par exemple ce que donne un
avant tes if