Accueil > > > COPIE ALÉATOIRE DE MUSIQUE POUR CLÉ USB MP3
COPIE ALÉATOIRE DE MUSIQUE POUR CLÉ USB MP3
Information sur la source
Description
Un premier script génère une bibliothèque des fichiers MP3 présent dans un dossier. Un second permet de sélectionner aléatoirement des fichiers de la bibliothèque et les copies sur un support amovible de type clé USB MP3. Le script vérifie, si le fichier n'à pas déjà été copié grâce à un fichier d'historique qui stock tous les fichiers envoyés sur le support de destination. Le nombre de fichier copié varie en fonction de la taille disponible sur le support de destination. Il est possible de modifier ce script comme bon vous semble pour l'adapter à vos besoins.
Source
- '##########################################################
- '# Script crée par Splite #
- '# splite@ifrance.com #
- '##########################################################
-
- Option Explicit
-
- Dim ptObj, ptDossier, Tab1, Tab2, Tab3, Fichier, Dossier, TabMaMusique(),ptDossierMusique
- Dim ContenueF, txtF, i, CheminLib, CheminMusique, DossierNomLib,Musique,ptDossierMus, MaMusique,MaLibrairie
-
- 'Dossier contenant les fichiers de musique à scanner
- MaMusique = "C:\Data\Ma Musique\"
-
- 'Dossier où la librairie doit être crée
- MaLibrairie = "C:\Data\Ma Musique\Librairie\"
-
- Set ptObj = CreateObject("Scripting.FileSystemObject")
- Set ptDossierMusique = ptObj.GetFolder(MaMusique)
- Set Musique = ptDossierMusique.SubFolders
-
- i = 1
- 'On boucle on fonction du nombre de fichier trouvé dans le chemin "MaMusique"
- For Each DossierNomLib in Musique
- If DossierNomLib.name <> "Librairie" Then
-
- CheminLib = MaLibrairie & "Librairie_" & DossierNomLib.name &".txt"
- CheminMusique = MaMusique & DossierNomLib.name
-
- 'Création et ouverture d'un fichier librairie suivant le genre trouvé dans le chemin "MaMusique"
- Set txtF = ptObj.OpenTextFile(CheminLib,2,1)
- 'J'obtient un objet qui me permettra de scanné les dossiers et fichiers du dossier actuelle
- Set ptDossierMus = ptObj.GetFolder(CheminMusique)
- Set Fichier = ptDossierMus.Files
- Set Dossier = ptDossierMus.SubFolders
-
- 'Appel de la fonction récursive de scan des dossiers
- SauveFichier()
- End If
- Next
-
- MsgBox "La bibliothèque à correctement été crée, " & i & " fichiers trouvés",64,"Bibliothèque crée"
-
- 'Fermeture du fichier
- txtF.Close
- 'Destruction de l'object
- Set ptObj = Nothing
-
- 'Définition de la fonction récursive
- Function SauveFichier()
- For Each Tab2 in Dossier
- Set ptDossier = ptObj.GetFolder(Tab2)
- Set Dossier = ptDossier.SubFolders
- Set Fichier = ptDossier.Files
-
- For Each Tab1 in Fichier
- If Right(Tab1.name,3) = "mp3" Then
- ContenueF = ptDossier.Path & "\" & Tab1.name
- txtF.WriteLine ContenueF
- i = i+1
- End If
- Next
-
- If Dossier.count <> 0 Then
- For Each Tab3 in Dossier
- SauveFichier()
- Next
- End If
- Next
- End Function
-
-
- '##########################################################
- '# Script crée par Splite #
- '# splite@ifrance.com #
- '##########################################################
-
- Option Explicit
-
- Dim nbAlea, Fichier, Stream, FichSauve, CheminLib, CheminSauve, Drive,TailleFree, remplire,TabFich
- Dim Free, FichierSelect, Taille, NbLigne, ptObj, Tab(), NbLigneHist, Exist,lettreSupport,FichLib
- Dim jour, mois, annee, Date, i, TabHist(), Selection, TailleMax, CheminDest, nbFichCopie,NomFichLib
- Dim MaMusique, j, message, ListeDossier,StreamHist,FichierHist,x
-
- '##########################################################
- '# Informations à modifier avant éxecution du script #
- '##########################################################
-
- 'Chemin du fichier d'historique des fichiers copiés
- CheminSauve = "C:\Data\Ma musique\Librairie\Historique.txt"
-
- 'Dossier contenant les fichiers de musique à scanner
- MaMusique = "C:\Data\Ma Musique\"
-
- 'Chemin du support de destination
- CheminDest = "C:\Data\dest\"
-
- 'Chemin du dossier contenant les librairies
- CheminLib = "C:\Data\Ma Musique\Librairie\"
-
- 'Taille maximum des fichiers à copier
- TailleMax = 5
-
- 'Mettez 1 pour remplir completement le support de destination et 0 dans le cas contraire
- remplire = 0
- 'Si vous venez de mettre 0, choisissez la taille max en Mo
- TailleFree = 50
-
- '##########################################################
- '# Fin des modifications #
- '##########################################################
-
- Sub Copie
-
- Jour = WeekdayName(Weekday(Day(Now)))
- Mois = MonthName(Month(Now))
- Annee = Year(Now)
-
- Date = jour&" "&Day(Now)&" "&mois&" "&annee
-
- Set ptObj = CreateObject("Scripting.FileSystemObject")
- Set FichLib = ptObj.GetFolder(MaMusique)
- Set NomFichLib = FichLib.SubFolders
-
- ReDim ListeDossier(NomFichLib.count)
-
- message = "Quels genre de musique voulez-vous copier" & VbCrLf & VbCrLf
- j = 1
- For Each TabFich in NomFichLib
- If TabFich.name <> "Librairie" Then
- message = message & j & " " & TabFich.Name & VbCrLf
- ListeDossier(j) = TabFich.Name
- j = j + 1
- End If
- Next
-
- Selection = InputBox(message,"Fichiers à copier","1")
-
- 'Si on Annulation, on quitte le programme
- If Selection = "" Then
- Exit Sub
- End If
-
- CheminLib = "C:\Data\Ma musique\Librairie\Librairie_" & ListeDossier(Selection) & ".txt"
-
- Taille = 0
-
- Randomize
- 'Ouverture en lecture de la librairie
- Set Fichier = ptObj.GetFile(CheminLib)
- Set Stream = Fichier.OpenAsTextStream(1)
- 'Ouverture en lecture du fichier Historique.txt
- Set StreamHist = ptObj.OpenTextFile(CheminSauve,1,True)
- 'Connexion sur le support amovible
- Set Drive = ptObj.Drives("C")
- If ptObj.FolderExists(CheminDest) = False Then
- 'Création du dossier "Ma Musique" sur le support
- ptObj.CreateFolder(CheminDest)
- End If
-
- 'Calcul du nombre de lignes présent dans lib.txt
- NbLigne = 0
- Do While Stream.AtEndOfStream <> True
- NbLigne = NbLigne + 1
- Stream.SkipLine
- Loop
-
- 'Calcul du nombre de lignes présent dans Historique.txt
- NbLigneHist = 0
- Do While StreamHist.AtEndOfStream <> True
- NbLigneHist = NbLigneHist + 1
- StreamHist.SkipLine
- Loop
-
- StreamHist.Close
- Set FichierHist = ptObj.GetFile(CheminSauve)
- Set StreamHist = FichierHist.OpenAsTextStream(1)
-
- 'Dimensionnement du tableau du fichier d'historique
- ReDim TabHist(NbLigneHist)
- NbLigneHist = NbLigneHist - 1
-
- 'Je stock le contenue du fichier Historique.txt dans un tableau
- For i = 0 To NbLigneHist
- TabHist(i)= StreamHist.ReadLine
- Next
-
- 'Fermeture du fichier lib.txt afin que le pointeur de ligne remonte en haut du fichier
- Stream.Close
-
- 'Ouverture en lecture du lib.txt
- Set Stream = Fichier.OpenAsTextStream(1)
- 'Ouverture en écriture du Historique.txt
- Set FichSauve = ptObj.OpenTextFile(CheminSauve,8,1)
-
- 'J'insère la date du jour dans le fichier d'historique
- FichSauve.WriteLine Date
- FichSauve.WriteBlankLines(1)
-
- If remplire = 1 Then
- 'Calcul l'espace restant sur le support
- Free = Drive.FreeSpace * 0.000001
- Free = Round(Free, 0)
- Else
- Free = TailleFree
- End If
-
- 'Si l'espace est inférieur à 5 Mo on stope le processus
- If Free < 5 Then
- MsgBox "Pas assez d'espace libre sur le support",16,"Manque d'espace disque"
- Else
- NbLigne = NbLigne - 1
- ReDim Tab(NbLigne)
- 'Je stock le contenue du fichier lib.txt dans un tableau
- For i = 0 To NbLigne
- Tab(i)= Stream.ReadLine
- Next
-
- nbFichCopie = 0
- Do While Taille < Free
- 'Génération d'un nombre aléatoire
- nbAlea = Int((NbLigne - 0 + 1) * Rnd + 0)
-
- 'J'accède aux propriétés du fichier
- Set FichierSelect = ptObj.GetFile(Tab(nbAlea))
-
- 'Je vérifie que le fichié a copier ne la pas été déjà, grace au fichier d'historique
- Exist = 0
- For x=0 To NbLigneHist
- 'Comparaison du fichier dans l'historique et celui à copier
- If StrComp(FichierSelect.Path,TabHist(x),vbTextCompare) = 0 Then
- Exist = 1
- End If
- Next
-
- If Exist = 0 Then
- 'Si le fichier dépasse 5 Mo on le jette
- If (FichierSelect.Size * 0.000001) <= TailleMax Then
- 'Je stock dans le fichier d'historique les fichiers copié sur le support
- FichSauve.WriteLine Tab(nbAlea)
-
- 'Additionne la taille des fichiers
- Taille = Taille + Round(FichierSelect.Size * 0.000001)
- 'Copie du fichier selectionné aléatoirement sur le support
- ptObj.CopyFile Tab(nbAlea), CheminDest
- End If
- End If
- 'Information sur le nombre total de fichier copié
- nbFichCopie = nbFichCopie + 1
- Loop
- MsgBox "Copie des fichiers terminée "& nbFichCopie &" fichiers copiés, soit : "& Taille &" Mo",64,"Copie terminée"
- End If
-
- FichSauve.WriteBlankLines(2)
-
- 'Fermeture des fichiers
- Stream.Close
- StreamHist.Close
- FichSauve.Close
-
- End Sub
-
- 'On appel la fonction de copie aléatoire
- Copie
'##########################################################
'# Script crée par Splite #
'# splite@ifrance.com #
'##########################################################
Option Explicit
Dim ptObj, ptDossier, Tab1, Tab2, Tab3, Fichier, Dossier, TabMaMusique(),ptDossierMusique
Dim ContenueF, txtF, i, CheminLib, CheminMusique, DossierNomLib,Musique,ptDossierMus, MaMusique,MaLibrairie
'Dossier contenant les fichiers de musique à scanner
MaMusique = "C:\Data\Ma Musique\"
'Dossier où la librairie doit être crée
MaLibrairie = "C:\Data\Ma Musique\Librairie\"
Set ptObj = CreateObject("Scripting.FileSystemObject")
Set ptDossierMusique = ptObj.GetFolder(MaMusique)
Set Musique = ptDossierMusique.SubFolders
i = 1
'On boucle on fonction du nombre de fichier trouvé dans le chemin "MaMusique"
For Each DossierNomLib in Musique
If DossierNomLib.name <> "Librairie" Then
CheminLib = MaLibrairie & "Librairie_" & DossierNomLib.name &".txt"
CheminMusique = MaMusique & DossierNomLib.name
'Création et ouverture d'un fichier librairie suivant le genre trouvé dans le chemin "MaMusique"
Set txtF = ptObj.OpenTextFile(CheminLib,2,1)
'J'obtient un objet qui me permettra de scanné les dossiers et fichiers du dossier actuelle
Set ptDossierMus = ptObj.GetFolder(CheminMusique)
Set Fichier = ptDossierMus.Files
Set Dossier = ptDossierMus.SubFolders
'Appel de la fonction récursive de scan des dossiers
SauveFichier()
End If
Next
MsgBox "La bibliothèque à correctement été crée, " & i & " fichiers trouvés",64,"Bibliothèque crée"
'Fermeture du fichier
txtF.Close
'Destruction de l'object
Set ptObj = Nothing
'Définition de la fonction récursive
Function SauveFichier()
For Each Tab2 in Dossier
Set ptDossier = ptObj.GetFolder(Tab2)
Set Dossier = ptDossier.SubFolders
Set Fichier = ptDossier.Files
For Each Tab1 in Fichier
If Right(Tab1.name,3) = "mp3" Then
ContenueF = ptDossier.Path & "\" & Tab1.name
txtF.WriteLine ContenueF
i = i+1
End If
Next
If Dossier.count <> 0 Then
For Each Tab3 in Dossier
SauveFichier()
Next
End If
Next
End Function
'##########################################################
'# Script crée par Splite #
'# splite@ifrance.com #
'##########################################################
Option Explicit
Dim nbAlea, Fichier, Stream, FichSauve, CheminLib, CheminSauve, Drive,TailleFree, remplire,TabFich
Dim Free, FichierSelect, Taille, NbLigne, ptObj, Tab(), NbLigneHist, Exist,lettreSupport,FichLib
Dim jour, mois, annee, Date, i, TabHist(), Selection, TailleMax, CheminDest, nbFichCopie,NomFichLib
Dim MaMusique, j, message, ListeDossier,StreamHist,FichierHist,x
'##########################################################
'# Informations à modifier avant éxecution du script #
'##########################################################
'Chemin du fichier d'historique des fichiers copiés
CheminSauve = "C:\Data\Ma musique\Librairie\Historique.txt"
'Dossier contenant les fichiers de musique à scanner
MaMusique = "C:\Data\Ma Musique\"
'Chemin du support de destination
CheminDest = "C:\Data\dest\"
'Chemin du dossier contenant les librairies
CheminLib = "C:\Data\Ma Musique\Librairie\"
'Taille maximum des fichiers à copier
TailleMax = 5
'Mettez 1 pour remplir completement le support de destination et 0 dans le cas contraire
remplire = 0
'Si vous venez de mettre 0, choisissez la taille max en Mo
TailleFree = 50
'##########################################################
'# Fin des modifications #
'##########################################################
Sub Copie
Jour = WeekdayName(Weekday(Day(Now)))
Mois = MonthName(Month(Now))
Annee = Year(Now)
Date = jour&" "&Day(Now)&" "&mois&" "&annee
Set ptObj = CreateObject("Scripting.FileSystemObject")
Set FichLib = ptObj.GetFolder(MaMusique)
Set NomFichLib = FichLib.SubFolders
ReDim ListeDossier(NomFichLib.count)
message = "Quels genre de musique voulez-vous copier" & VbCrLf & VbCrLf
j = 1
For Each TabFich in NomFichLib
If TabFich.name <> "Librairie" Then
message = message & j & " " & TabFich.Name & VbCrLf
ListeDossier(j) = TabFich.Name
j = j + 1
End If
Next
Selection = InputBox(message,"Fichiers à copier","1")
'Si on Annulation, on quitte le programme
If Selection = "" Then
Exit Sub
End If
CheminLib = "C:\Data\Ma musique\Librairie\Librairie_" & ListeDossier(Selection) & ".txt"
Taille = 0
Randomize
'Ouverture en lecture de la librairie
Set Fichier = ptObj.GetFile(CheminLib)
Set Stream = Fichier.OpenAsTextStream(1)
'Ouverture en lecture du fichier Historique.txt
Set StreamHist = ptObj.OpenTextFile(CheminSauve,1,True)
'Connexion sur le support amovible
Set Drive = ptObj.Drives("C")
If ptObj.FolderExists(CheminDest) = False Then
'Création du dossier "Ma Musique" sur le support
ptObj.CreateFolder(CheminDest)
End If
'Calcul du nombre de lignes présent dans lib.txt
NbLigne = 0
Do While Stream.AtEndOfStream <> True
NbLigne = NbLigne + 1
Stream.SkipLine
Loop
'Calcul du nombre de lignes présent dans Historique.txt
NbLigneHist = 0
Do While StreamHist.AtEndOfStream <> True
NbLigneHist = NbLigneHist + 1
StreamHist.SkipLine
Loop
StreamHist.Close
Set FichierHist = ptObj.GetFile(CheminSauve)
Set StreamHist = FichierHist.OpenAsTextStream(1)
'Dimensionnement du tableau du fichier d'historique
ReDim TabHist(NbLigneHist)
NbLigneHist = NbLigneHist - 1
'Je stock le contenue du fichier Historique.txt dans un tableau
For i = 0 To NbLigneHist
TabHist(i)= StreamHist.ReadLine
Next
'Fermeture du fichier lib.txt afin que le pointeur de ligne remonte en haut du fichier
Stream.Close
'Ouverture en lecture du lib.txt
Set Stream = Fichier.OpenAsTextStream(1)
'Ouverture en écriture du Historique.txt
Set FichSauve = ptObj.OpenTextFile(CheminSauve,8,1)
'J'insère la date du jour dans le fichier d'historique
FichSauve.WriteLine Date
FichSauve.WriteBlankLines(1)
If remplire = 1 Then
'Calcul l'espace restant sur le support
Free = Drive.FreeSpace * 0.000001
Free = Round(Free, 0)
Else
Free = TailleFree
End If
'Si l'espace est inférieur à 5 Mo on stope le processus
If Free < 5 Then
MsgBox "Pas assez d'espace libre sur le support",16,"Manque d'espace disque"
Else
NbLigne = NbLigne - 1
ReDim Tab(NbLigne)
'Je stock le contenue du fichier lib.txt dans un tableau
For i = 0 To NbLigne
Tab(i)= Stream.ReadLine
Next
nbFichCopie = 0
Do While Taille < Free
'Génération d'un nombre aléatoire
nbAlea = Int((NbLigne - 0 + 1) * Rnd + 0)
'J'accède aux propriétés du fichier
Set FichierSelect = ptObj.GetFile(Tab(nbAlea))
'Je vérifie que le fichié a copier ne la pas été déjà, grace au fichier d'historique
Exist = 0
For x=0 To NbLigneHist
'Comparaison du fichier dans l'historique et celui à copier
If StrComp(FichierSelect.Path,TabHist(x),vbTextCompare) = 0 Then
Exist = 1
End If
Next
If Exist = 0 Then
'Si le fichier dépasse 5 Mo on le jette
If (FichierSelect.Size * 0.000001) <= TailleMax Then
'Je stock dans le fichier d'historique les fichiers copié sur le support
FichSauve.WriteLine Tab(nbAlea)
'Additionne la taille des fichiers
Taille = Taille + Round(FichierSelect.Size * 0.000001)
'Copie du fichier selectionné aléatoirement sur le support
ptObj.CopyFile Tab(nbAlea), CheminDest
End If
End If
'Information sur le nombre total de fichier copié
nbFichCopie = nbFichCopie + 1
Loop
MsgBox "Copie des fichiers terminée "& nbFichCopie &" fichiers copiés, soit : "& Taille &" Mo",64,"Copie terminée"
End If
FichSauve.WriteBlankLines(2)
'Fermeture des fichiers
Stream.Close
StreamHist.Close
FichSauve.Close
End Sub
'On appel la fonction de copie aléatoire
Copie
Conclusion
Etant donné que c'est mon premier script en VBS, il se peut que vous trouviez quelques bugs, malgré les soins que j'y est apporté...je vous laisse les découvrir
Historique
- 19 août 2004 17:50:15 :
- Cette nouvelle version permet de scanner dynamiquement les fichiers à copier, il suffit d'organiser son dossier Ma Musique suivant les différents genre de musique que l'on a. La création de la librairie ce fait ainsi automatiquement. Il en est de même pour le programme de copie qui créer le menu de sélection dynamiquement par rapport à ces mêmes genres musicaux. Il est également possible de donner un quota de taille de fichiers à copier au lieu de remplir totalement le support de destination.
Il suffit de renseigner correctement les chemins de source et de destination et le programme est près à fonctionner !
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Je m'y prends un peu tard je sais, mais bon je suis développeur web et donc hyper fainéant ! Toujours dans le cadre des technologies émergentes, ici HTML5, parce qu'on aime HTML5 chez Wyg , nous seront présent, le vieux ( Aurélien V.) et moi, pour pr...
Cliquez pour lire la suite de l'article par Gio [WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|