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 !

10 réponses

1 2
Avatar
Jerome
wrote in message
news:
Bonjour !



J'aimerais exécuter 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 à lister les fichiers DTS ; puis les mettre sur une
même ligne avec le caractère "+" entre. J'ai essayé "programme.exe
*.dts" mais ça ne fonctionne pas.



Ca ne semble pas une très bonne idée de passer pour argument à un prog la
concaténation de noms de fichiers.
Car ça peut faire une chaine de longueur énorme s'il y a des dizaines de
fichiers.
Et que doit faire ensuite le programme avec cette chaine en argument ?
En général, on boucle sur la liste des fichiers et on appelle à chaque fois
le programme avec le nom du fichier listé courant en paramètre...
Avatar
pihug12
Merci pour ta réponse.

Je dois premièrement traiter les fichiers DTS un par un pour les
convertir en AC3 (d'où le besoin d'attribuer une varaible par fichier)
et secondement je souhaiterais muxer le tout dans un fichier MKV (ce
qui ferait une concaténation de maximum 5 fichiers [vidéo + 2 pistes
audios max + 2 sous-titres max]).
Avatar
mdnews
On Thu, 5 Feb 2009 12:49:23 -0800 (PST), wrote:

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




Si tu es sous Windows NT ou suivant, et que tu prend tous les fichiers
du répertoire, inutile de les lister avant.

FOR %A in (*.dts) DO programme.exe %A
Avatar
pihug12
> Si tu es sous Windows NT ou suivant, et que tu prend tous les fichiers
du répertoire, inutile de les lister avant.

        FOR %A in (*.dts) DO programme.exe %A



Super ! Ca marche très bien pour convertir les fichiers un par un.

Je cherche maintenant comment faire pour pouvoir concaténer tout les
fichiers.
J'ai essayé ça :
for %%A in (*.264) do echo %%A>sortie.txt
for %%A in (*.ac3) do echo +%%A>>sortie.txt
for %%A in (*.srt) do echo +%%A>>sortie.txt

Et voilà le contenu du fichier sortie.txt :
film_Track1.264
+film_Track3.ac3
+film_Track4.srt
+film_Track5.srt

Il faut juste que je trouve un script qui supprime les retours
chariots et que je mette le tout dans une variable. Quelqu'un peut me
donner un coup de main juste pour enlever les sauts de ligne ? :-X

Merci pour votre précieuse aide !
Avatar
mdnews
On Fri, 6 Feb 2009 07:22:55 -0800 (PST), wrote:

Si tu es sous Windows NT ou suivant, et que tu prend tous les fichiers
du répertoire, inutile de les lister avant.

        FOR %A in (*.dts) DO programme.exe %A



Super ! Ca marche très bien pour convertir les fichiers un par un.

Je cherche maintenant comment faire pour pouvoir concaténer tout les
fichiers.
J'ai essayé ça :
for %%A in (*.264) do echo %%A>sortie.txt
for %%A in (*.ac3) do echo +%%A>>sortie.txt
for %%A in (*.srt) do echo +%%A>>sortie.txt

Et voilà le contenu du fichier sortie.txt :
film_Track1.264
+film_Track3.ac3
+film_Track4.srt
+film_Track5.srt

Il faut juste que je trouve un script qui supprime les retours
chariots et que je mette le tout dans une variable. Quelqu'un peut me
donner un coup de main juste pour enlever les sauts de ligne ? :-X

Merci pour votre précieuse aide !




S'il s'agit juste de concaterner le contenu des fichiers, c'est plus
simplement

COPY fichier1 + fichier2 + fichier3 +... fichier_complet
soit
COPY film_Track1.264 + film_Track3.ac3 + film_Track4.srt +
+film_Track5.srt film_complet

(en une seule ligne)

si l'ordre importe peu on peut faire

COPY film*.* film_complet

un espace autour de chaque signe +
un espace seul pour séparer le dernier nom de fichier (qui est le
total)

PS. Je m'étonne qu'il suffise de concaterner des fichiers de type
différents pour les assembler ?
Avatar
pihug12
> S'il s'agit juste de concaterner le contenu des fichiers [...]

PS. Je m'étonne qu'il suffise de concaterner des fichiers de type
différents pour les assembler ?



Non non. C'est pas le contenu qu'il faut concaténer. Il faut que je
mette le nom des fichiers à la suite pour pouvoir les muxer dans un
fichier MKV à l'aide d'un programme.
Je me suis peut-être mal fait comprendre. >_<
Avatar
Claude PARMENTIER
On Thu, 5 Feb 2009 16:58:27 -0800 (PST), wrote:

Merci pour ta réponse.

Je dois premièrement traiter les fichiers DTS un par un pour les
convertir en AC3 (d'où le besoin d'attribuer une varaible par fichier)
et secondement je souhaiterais muxer le tout dans un fichier MKV (ce
qui ferait une concaténation de maximum 5 fichiers [vidéo + 2 pistes
audios max + 2 sous-titres max]).



Alors t'emmerde pas, appel le programme autant de fois qu'il y a de
DTS.

Tu peux meme voir si tu as un multicoeur pour lancer un exe par cpu.
Ca ira plus vite.
Avatar
Claude PARMENTIER
On Fri, 06 Feb 2009 16:45:53 +0100, mdnews
wrote:

PS. Je m'étonne qu'il suffise de concaterner des fichiers de type
différents pour les assembler ?



Il te faut le "copy /B" car dans le tas tu as pas que des fichier
texte mais aussi des binaires.
Avatar
Christian ASTOR
wrote:

Si tu es sous Windows NT ou suivant, et que tu prend tous les fichiers
du répertoire, inutile de les lister avant.

FOR %A in (*.dts) DO programme.exe %A




Super ! Ca marche très bien pour convertir les fichiers un par un.

Je cherche maintenant comment faire pour pouvoir concaténer tout les
fichiers.



Concatène les juste dans une variable.

Ex :

@echo off
setlocal enabledelayedexpansion

set string
for %%a in (*.dts) do call :fct "%%a"
goto :display

:fct
if "!string!"=="" (
set string=%1
) else (
set string=%string%+%1
)
goto :EOF

:display
echo Chaine finale = %string%
Avatar
pihug12
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).
1 2