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 !
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
<pihug12@gmail.com> a écrit dans le message de
news:5a5960df-9fb7-4b3d-bb25-667a791c64d0@j39g2000yqn.googlegroups.com...
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
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