IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Aide pour récupérer le début d'un nom de fichier et le donner à un autre


Sujet :

Scripts/Batch

  1. #1
    Candidat au Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Points : 3
    Points
    3
    Par défaut Aide pour récupérer le début d'un nom de fichier et le donner à un autre
    Salut à tous,

    Je débute tout juste à faire quelques lignes de commande qui me servent dans mon travail. Actuellement j'utilise aussi beaucoup FFMPEG qui est un programme qui permet de modifier,créer, etc les fichiers video.
    Bref, j'ai utilisé des lignes de commandes pour assembler 2 fichiers video et cela fonctionne. Problème ce fichier video nouvellement créer ce nomme "'output" et mon souhait serait qu'il ne nomme en fonction d'un des 2 fichiers video.

    - XXX_CDB.mov
    - XXX_PK.mov

    fichier créer après assemblage :
    - output.mov

    Je voudrais que le output.mov soit nommé XXX.mov (donc en fonction du début d'un des 2 fichiers reçus)

    Voilà mon fichier bat :

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    :: Edit the line below to match your path to the ffmpeg executable.
    set path2exe=C:\Users\Benjamin\Desktop\ffmpeg\bin\ffmpeg.exe
    cd c:\Users\Benjamin\Desktop\3\
    (for %%i in (*.mov) do @echo file '%%i') > list.txt
    %path2exe% -f concat -i list.txt -c copy output.mov


    Ce bat repère les fichiers ".mov"et les inscrit dans une liste(list.txt). Le logiciel ffmpeg assemble ensuite les fichiers mov en fonction de la liste créé.
    Comment dois-je faire à votre avis? avec une variable j'imagine?

    Merci beaucoup pour votre aide.

    A bientôt.

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Comme ceci par exemple

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    :: Edit the line below to match your path to the ffmpeg executable.
    set path2exe=C:\Users\Benjamin\Desktop\ffmpeg\bin\ffmpeg.exe
    cd c:\Users\Benjamin\Desktop\3\
    (for %%i in (*.mov) do @echo file '%%i'&set var=%%~i) > list.txt
    echo %path2exe% -f concat -i list.txt -c copy %var:~,3%.mov

  3. #3
    Candidat au Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup c'est très sympa mais bizarrement cela ne fonctionne pas....
    En le lançant rien ne se passe(la list.txt est bien créée) mais pas de fichier de sortie.
    Sous cmd, je vois les commandes mais :
    1 pas de fichier créé par ffmpeg
    2 le nom de sortie semble être uniquement les 3 premiers caractères d'un des fichiers sources(Là je sais pourquoi car dans mon 1er message j'avais stipulé "XXX_CDB" mais en fait XXX signifie que le nom peut être un peu n'importe quoi avec différentes longueurs...

    Bon je vais m'aider de ton code pour chercher.
    Merci beaucoup.


  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Tes fichiers se terminerons toujours par _CDB.mov et _PK.mov ?

    Met une pause à la fin de script pour voir la dernière commande, car je ne sais pas pourquoi cela ne fonctionnerai pas.

  5. #5
    Candidat au Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par ericlm128 Voir le message
    Tes fichiers se terminerons toujours par _CDB.mov et _PK.mov ?

    Met une pause à la fin de script pour voir la dernière commande, car je ne sais pas pourquoi cela ne fonctionnerai pas.
    Salut,

    Bon j'ai trouvé. Cela fonctionne mais j'ai du enlever le "echo" au début de la ligne 5.
    Par contre vu que mes fichiers sont toujours nommés avec "_CDB" ou "_PK"à la fin, y aurait-il un moyen de couper la fin du nom (otant donc _cdb ou _pk)? Ou alors de nommer le fichier de sortie comme la source sauf _cdb ou _pk?
    Merci beauboup.


  6. #6
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Ok oui il y avait le "echo"

    Voici une autre proposition

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    :: Edit the line below to match your path to the ffmpeg executable.
    SETLOCAL ENABLEDELAYEDEXPANSION
     
    set path2exe=C:\Users\Benjamin\Desktop\ffmpeg\bin\ffmpeg.exe
    cd c:\Users\Benjamin\Desktop\3\
     
    for %%i in (*.mov) do (
    @echo file '%%i'
    set var_tmp=%%~ni
    IF /I "!var_tmp:~-3!" == "_PK" set var=!var_tmp:~,-3!
    )> list.txt
     
    %path2exe% -f concat -i list.txt -c copy %var%.mov

  7. #7
    Candidat au Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci Eric c'est top mais il y a juste un souci c'est que maintenant mes 2 fichiers videos ne sont plus assemblés....
    Le fichier "list.txt" le contient plus qu'1 fichier (celui avec _PK), il ne s'occupe apparemment plus du 2éme...
    Bon sinon le nom c'est parfait
    Et surtout je dois dire que tu m'as largué sévère Je suivais un peu au début mais là...Va falloir que je retourne à l'école car j'ai un sacré retard.

    Merci beaucoup en tous cas et cela me rassure, c'est pas si simple que ça


  8. #8
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Oui je n'avais pas vérifié. On n'a qua faire cela alors

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    :: Edit the line below to match your path to the ffmpeg executable.
    SETLOCAL ENABLEDELAYEDEXPANSION
     
    set path2exe=C:\Users\Benjamin\Desktop\ffmpeg\bin\ffmpeg.exe
    cd c:\Users\Benjamin\Desktop\3\
     
    del list.txt /F /Q
    for %%i in (*.mov) do (
    @echo file '%%i'>> list.txt
    set var_tmp=%%~ni
    IF /I "!var_tmp:~-3!" == "_PK" set var=!var_tmp:~,-3!
    )
     
    %path2exe% -f concat -i list.txt -c copy %var%.mov

  9. #9
    Candidat au Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Salut Eric,

    Bon bah respect...Là cela fonctionne parfaitement bravo.
    J'avoue que je vais être obligé de retourner à l'école car c'est trop pointu pour moi
    Pour info et si cela ne te dérange pas, pourrais-tu me dire quelle est la donnée qui ôte 3 caractères au nom d'origine stp?(qui pointe le fichier _pk apparemment).
    Je demande dans l'hypothèse où mes fichiers seraient plus grand que prévu...Genre je veux ôter non pas 3 mais 6 caractères en partant de la fin.
    Si trop compliqué à expliquer, laisse tomber car c'est déjà top et super sympa de m'avoir aidé.

    Merci beaucoup!!!


  10. #10
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Vite fait.

    Code batch : 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
    REM Active l'expansion des variables d'environnements (permet d'utiliser !var! dans un bloc de code afin d'obtenir le contenu d'une variable)
    REM !var! est similaire à %var% mais est une spécificitée (tare ?) liée au fonctionnement d'évaluation des variables effectuée par l'interpréteur de batch
    SETLOCAL ENABLEDELAYEDEXPANSION
     
    :: Edit the line below to match your path to the ffmpeg executable.
    set path2exe=C:\Users\Benjamin\Desktop\ffmpeg\bin\ffmpeg.exe
    cd c:\Users\Benjamin\Desktop\3\
     
    del list.txt /F /Q
    for %%i in (*.mov) do (
    @echo file '%%i'>> list.txt
     
    REM stock le nom du fichier, sans son extension, dans var_tmp
    set var_tmp=%%~ni
     
    REM Si les 3 derniers caractères sont _PK, alors on stock le nom sans les trois dernier caractères dans var
    REM Taper "SET /?" et voir la section en bas "substitution de la variable d'environnement" pour plus d'infos
    IF /I "!var_tmp:~-3!" == "_PK" set var=!var_tmp:~,-3!
    )
     
    %path2exe% -f concat -i list.txt -c copy %var%.mov

  11. #11
    Candidat au Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci Eric.

    Les explications en commentaires sont très utiles Mais je pensais avoir compris la ligne 18 donc si l'on change "!var_tmp:~-3!" == "_PK" set var=!var_tmp:~,-3! EN "!var_tmp:~-6!" == "_PK_AE" set var=!var_tmp:~,-6! On devrait couper les 6 dernières lettres du nom mais cela ne fonctionne pas...J'ai un fichier sans nom. Il doit y avoir un truc qui m'échappe
    T'inquiète pas c'est déjà bien sympa d'avoir aidé un noob comme moi.
    A+

    Benjamin

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/03/2011, 17h13
  2. Aide pour récupérer code source dans une variable
    Par leumas dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 02/09/2008, 14h03
  3. Réponses: 4
    Dernier message: 31/10/2007, 15h11
  4. [MySQL] je cherche une aide pour récupérer des champs d'une base de donnée
    Par maya24 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/09/2007, 12h14
  5. Réponses: 7
    Dernier message: 12/06/2007, 14h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo