Bonjour à tous,

Je voulais en parcourant un fichier d'enregistrements de ma bibliothèque musicale appelé Musique.m3u créer une liste aléatoire du contenu de ce fichier, car à l'origine, le contenu du fichier m3u est classé en suivant l'arborescence du dossier Ma Musique.

J'ai trouvé sur le forum, un code permettant une sortie aléatoire d'après le contenu d'un fichier. J'ai modifié le code pour l'adapter à mes besoins, mais vous le devinez, j'ai un soucis.

En effet, à un moment "T" la génération de ma liste aléatoire Musique2.txt bloque et ne prend en compte qu'une partie du fichier Musique.m3u.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
:mainchoix
cls
mode con cols=60 lines=5
color 0E
echo #EXTM3U >Musique2.txt
:mainchoix0
@SET %%A=
@SET line=
@SET %%I=
SETLOCAL ENABLEEXTENSIONS
REM Compter le nombre de lignes avant tout.
SET nblines=0
FOR /F "delims=" %%I IN ('TYPE Musique.m3u') DO SET /a nblines+=1
REM Récupérer une ligne au hasard.
SET /a line=%RANDOM% %% %nblines%
REM Parcours du fichier d'origine, en sautant "line" lignes.
FOR /F "skip=%line% delims=" %%I IN ('TYPE Musique.m3u') DO (
REM Sortie de la ligne.
	CLS
	ECHO.
	ECHO              Alea jacta est: Carpe diem
	ECHO.
	ECHO %%I>> Musique2.txt
REM Je place le endlocal ici, sinon %nblineb% ne s'affiche pas:
REM Résultat à l'écran: Ajout de la piste:   / 995
ENDLOCAL
    SET nblineb=0
	FOR /F "delims=" %%A IN ('TYPE Musique2.txt') DO SET /a nblineb+=1
	ECHO         Ajout de la piste:  %nblineb% / %nblines%
	IF %nblines%==%nblineb% GOTO break

 	GOTO mainchoix0
)	

:break
if exist Musique.m3u del Musique.m3u
ping 127.0.0.1 -n 1 >nul
ren Musique2.txt Musique.m3u
ping 127.0.0.1 -n 1 >nul

start Musique.m3u
if existe Lecture.txt del Lecture.txt
exit
La partie du traitement aléatoire se trouve dans la balise :mainchoix0
Également dans cette même partie, deux compteurs, afin de pouvoir afficher à l'écran les informations sur le traitement.

Je ne comprends comment corriger mon problème. Je vous remercie de l'aide que vous pourrez m'apporter pour solutionner ce problème.