Flash info

Les vrais admins utilisent la ligne de commande... (dixit le mag Windows IT Pro du 6/02/07) Avis aux amateurs pour affirmer leur virilité Surprised.
La suite est ici.

 
Accueil arrow Forum

Bienvenue sur le forum PowerShell-Scripting.com

 
ThierryLC
Utilisateur

PowerShelleur Débutant
Messages: 5
graphgraph
Karma: 0  
[Résolu] Copie de fichiers dans sous-rep - 12/09/18 14:22 Bonjour à tous,

J'ai récupéré sur le net un script qui est censé trier les fichiers d'un répertoire et les copier dans des sous-répertoires d'une taille prédéfinie.

Mais ça marche pô.

Quelqu'un aurait-il le loisir de m'indiquer ce qu'il faudrait modifier ? (Je n'ai aucune expérience en programmation, hormis celle de mon réveil-matin

Merci d'avance

Thierry

Annexe N°1 : le script

Code:

  # Replace with your base folder's path $baseFolder M:\MesVideos # Replace with the desired value for the subfolders to create $maxSubFolderSize 500MB # Get all files contained in your base folder (could use the -recurse switch if needed) $allFiles Get-ChildItem $baseFolder # Setting the subfolders naming convention : a name and a suffix $baseSubFolder SubFolder- [int]$index 0 # Creating the first subfolder $subFolder "SubFolder-" "$index" New-Item -Path $subFolder -Type Directory -Force # Now processing the files foreach ($file in $allFiles) {     # Evaluating the size of the current subfolder     $subFolderSize = ((Get-ChildItem $subFolder -Recurse Measure-Object -Property Length -Sum -ErrorAction Stop).Sum 1MB)     # If the current subfolder size is greater than the limit, create a new subfolder and begin to copy  files in it     if([int]$subFolderSize -gt [int]$maxSubFolderSize/1MB)     {         $index++         $subFolder $baseSubFolder $index         New-Item -Path $subFolder -Type Directory -Force         Write-Verbose -Message "Created folder $subFolder"         Move-Item $file.FullName -Destination $subFolder     }     # If the current subfolder is not yet greater that the limit, continue copying files in it     else {         Move-Item $file.FullName -Destination $subFolder     } }



Annexe N°2 : Exemple d'erreur

Code:

  Impossible de convertir la valeur « 10737418240 » en type « System.Int32 ». Erreur « La valeur était trop grande ou trop petite pour un Int32. » Au niveau de C:\MoveFilesLimit.ps1 25 Caractère 54 +     if([int]$subFolderSize -gt [int]$maxSubFolderSize <<<< /1MB)     + CategoryInfo          NotSpecified: (:) [], RuntimeException     FullyQualifiedErrorId RuntimeException



Message édité par: Arnaud, à: 13/09/18 10:17
  | | L'administrateur a désactivé l'accés public en écriture.
ThierryLC
Utilisateur

PowerShelleur Débutant
Messages: 5
graphgraph
Karma: 0  
Re:Copie de fichiers dans sous-rep de taille fixée - 12/09/18 14:45 Ça y est, j'ai trouvé moi-même l'erreur et cela fonctionne.

Il fallait supprimer les espaces $maxSubFolderSize=500MB

Merci de votre attention, vous pouvez reprendre une activité normale
  | | L'administrateur a désactivé l'accés public en écriture.
Arnaud
Admin

Administrateur
Messages: 1232
graphgraph
Karma: 43  
Re:Copie de fichiers dans sous-rep de taille fixée - 12/09/18 15:53 Merci de votre attention, vous pouvez reprendre une activité normale

Mais il n'y a pas de quoi Thierry
MVP PowerShell (depuis 2007)
Suivez moi sur Twitter !
  | | L'administrateur a désactivé l'accés public en écriture.
ThierryLC
Utilisateur

PowerShelleur Débutant
Messages: 5
graphgraph
Karma: 0  
Re:Copie de fichiers dans sous-rep de taille fixée - 12/09/18 16:26 En fait, ça marche pô comme je voudrais.

Pour l'instant les sous-répertoires sont créés dans c:/USER/MonProfil alors ce qui m'irait bien, c'est que tout reste dans le répertoire de base, c-a-d $baseFolder = M:MesVideos

Comment fait-on cela ?
Je teste différentes options depuis une heure, rien ne marche.

#oscour

Message édité par: ThierryLC, à: 12/09/18 16:43
  | | L'administrateur a désactivé l'accés public en écriture.
6ratgus
Utilisateur

PowerShelleur Platinum
Messages: 1481
graphgraph
Karma: 110  
Re:Copie de fichiers dans sous-rep de taille fixée - 12/09/18 17:02 salut ThierryLC

ce qui m'irait bien, c'est que tout reste dans le répertoire de base, c-a-d $baseFolder = M:MesVideos
il faut que tu remplace cette ligne :
Code:

 $subFolder "SubFolder-" "$index"


par cette ligne :
Code:

 $subFolder $baseFolder "SubFolder-" "$index"

  | | L'administrateur a désactivé l'accés public en écriture.
ThierryLC
Utilisateur

PowerShelleur Débutant
Messages: 5
graphgraph
Karma: 0  
Re:Copie de fichiers dans sous-rep de taille fixée - 12/09/18 17:20 Je suis maudit, le premier sous-répertoire est bien créé dans $baseFolder, mais les suivants toujours dans C:UsersThierry

Voici mon script actuel

Code:

  # Replace with your base folder's path $baseFolder "E:\Test" # Replace with the desired value for the subfolders to create $maxSubFolderSize 40MB # Get all files contained in your base folder (could use the -recurse switch if needed) $allFiles Get-ChildItem $baseFolder # Setting the subfolders naming convention : a name and a suffix $baseSubFolder "SubFolder-" [int]$index 1 # Creating the first subfolder $subFolder $baseFolder "SubFolder-" "$index" New-Item -Path $subFolder -Type Directory -Force # Now processing the files foreach ($file in $allFiles) {     # Evaluating the size of the current subfolder     $subFolderSize = ((Get-ChildItem $subFolder -Recurse Measure-Object -Property Length -Sum -ErrorAction Stop).Sum 1MB)     # If the current subfolder size is greater than the limit, create a new subfolder and begin to copy  files in it     if([int]$subFolderSize -gt [int]$maxSubFolderSize/1MB)     {         $index++         $subFolder $baseSubFolder $index         New-Item -Path $subFolder -Type Directory -Force         Write-Verbose -Message "Created folder $subFolder"         Move-Item $file.FullName -Destination $subFolder     }     # If the current subfolder is not yet greater that the limit, continue copying files in it     else {         Move-Item $file.FullName -Destination $subFolder     } }



et la sortie dans PowerShell ISE

Code:

      Répertoire E:\ Mode                LastWriteTime     Length Name                               ----                -------------     ------ ----                               d----        12/09/2018     18:11            TestSubFolder-1                        Répertoire C:\Users\Thierry Mode                LastWriteTime     Length Name                               ----                -------------     ------ ----                               d----        12/09/2018     18:16            SubFolder-2                        d----        12/09/2018     18:16            SubFolder-3                        d----        12/09/2018     18:16            SubFolder-4                        d----        12/09/2018     18:16            SubFolder-5                        d----        12/09/2018     18:16            SubFolder-6                        d----        12/09/2018     18:16            SubFolder-7                        d----        12/09/2018     18:16            SubFolder-8                        d----        12/09/2018     18:16            SubFolder-9                        d----        12/09/2018     18:16            SubFolder-10                       d----        12/09/2018     18:16            SubFolder-11                       d----        12/09/2018     18:16            SubFolder-12                       d----        12/09/2018     18:16            SubFolder-13                      



Message édité par: ThierryLC, à: 12/09/18 17:33

Message édité par: ThierryLC, à: 12/09/18 17:34
  | | L'administrateur a désactivé l'accés public en écriture.
6ratgus
Utilisateur

PowerShelleur Platinum
Messages: 1481
graphgraph
Karma: 110  
Re:Copie de fichiers dans sous-rep de taille fixée - 13/09/18 08:29 Je suis maudit, le premier sous-répertoire est bien créé dans $baseFolder, mais les suivants toujours dans C:UsersThierryne t'inquiète pas, il n'y a pas de malediction sur toi

il seulement une deuxième ligne avec new-item vers la fin du script que tu dois aussi remplacer !!!

Message édité par: 6ratgus, à: 13/09/18 08:30
  | | L'administrateur a désactivé l'accés public en écriture.
ThierryLC
Utilisateur

PowerShelleur Débutant
Messages: 5
graphgraph
Karma: 0  
Re:Copie de fichiers dans sous-rep de taille fixée - 13/09/18 08:47 Merci Ô Grand Marabout, ça fonctionne maintenant.
  | | L'administrateur a désactivé l'accés public en écriture.
© 2018 PowerShell-Scripting.com