Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lister les fichiers portant la même extension

11 réponses
Avatar
pihug12
Bonjour !

J'aimerais ex=E9cuter une commande avec comme argument tout les fichiers
DTS d'un dossier.
(exemple : programme.exe fichier1.dts+fichier2.dts+fichier3.dts)

Je n'arrive pas =E0 lister les fichiers DTS ; puis les mettre sur une
m=EAme ligne avec le caract=E8re "+" entre. J'ai essay=E9 "programme.exe
*.dts" mais =E7a ne fonctionne pas.

Je pense avoir trouver une alternative mais je n'arrive pas =E0 la
terminer.
dir *.dts /b > dts_tracks.txt
for /f "delims=3D" %%i in ('type dts_tracks.txt') do set /a ComptDTS+=3D1

Contenu du fichier dts_tracks.txt :
film_Track2.dts
film_Track3.dts

J'aimerais maintenant assigner une variable =E0 chacun de ses fichiers
(soit une variable par ligne). Et ensuite je n'ai plus qu'=E0 faire une
boucle jusqu'=E0 %ComptDTS% (nombre de lignes du fichier).
J'aimerais cr=E9er des variables du nom de %DTS1%, %DTS2%, etc... mais
j'ai aucune id=E9e comment faire. >_<

Vous pensez que cette alternative est la solution la plus simple ?
Merci =E0 celui qui pourra m'aider !

1 réponse

1 2
Avatar
Jean-Claude BELLAMY
a écrit dans le message de
news:
Quelqu'un peut m'expliquer pourquoi quand je fais :
for %%a in (*.h264) do set string=temp%%a
for %%a in (*.ac3) do set string=%string%+temp%%a
for %%a in (*.srt) do set string=%string%+temp%%a
seulement un fichier AC3 et SRT sont pris (je pense que seul le
dernier de l'ordre alphabétique est retenu).



Parce que dans une boucle FOR, les variables d'environnement (encadrées par
des "%") n'évoluent pas !
Dans ton exemple, "string" conserve la valeur qui lui a été affectée la 1ère
fois dans la boucle.

Si on veut avoir un comportement "dynamique" des variables d'environnement,
il faut faire appel à ce qu'on appelle "l'expansion retardée des variables"
("Delayed Expansion"). Ce paramètre permet d'expliciter le contenu d'une
variable EN COURS d'exécution d'un script (et non au début).
On l'active, au choix :
- en exécutant CMD (une fois suffit) avec le commutateur "/V:ON"
- en la rendant permanente par ajout d'une entrée dans la clef :
HKLMESOFTWAREMicrosoftCommand Processor
Entrée "DelayedExpansion"
Type REG_DWORD
Valeur 0x00000001
NB: tout est dans l'aide de SET

Une fois que l'expansion retardée a été activée, dans les scripts les
variables d'environnement qu'on veut voir évoluer doivent être encadrées par
des "!" au lieu de "%"


Donc il faut écrire :
for %%a in (*.h264) do set string=!string!+temp%%a
for %%a in (*.ac3) do set string=!string!+temp%%a
for %%a in (*.srt) do set string=!string!+temp%%a



--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr
1 2