Lister les fichiers portant la même extension

Le
pihug12
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.

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

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

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

Vous pensez que cette alternative est la solution la plus simple ?
Merci à celui qui pourra m'aider !
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jerome
Le #18595101
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...
pihug12
Le #18595221
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]).
mdnews
Le #18595911
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
pihug12
Le #18600811
> 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 !
mdnews
Le #18600981
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 ?
pihug12
Le #18602111
> 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. >_<
Claude PARMENTIER
Le #18607321
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.
Claude PARMENTIER
Le #18607311
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.
Christian ASTOR
Le #18608201
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%
pihug12
Le #18729741
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).
Publicité
Poster une réponse
Anonyme