Flash info

"Les IT Pros sont en train de migrer rapidement car PowerShell est plus facile et plus puissant que VBScript."

Microsoft Scripting Guys

 
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: 1239
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: 1552
graphgraph
Karma: 113  
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: 1552
graphgraph
Karma: 113  
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.
© 2019 PowerShell-Scripting.com