Automatiser le lancement répétitif d'une application

Fermé
aflafla - 12 oct. 2020 à 10:42
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 - 12 oct. 2020 à 20:53
Bonjour à tous,

Dans le cadre de mon travail nous devons régulièrement convertir un nombre de fichiers vidéo.
Actuellement, la commande basique dans un batch est

cd répertoire_de_conversion
appli.exe vid.asf

Simple lorsqu'il n'y a qu'un fichier. Fastidieux lorsqu'il y en a 30.

En effet, on doit :
- renommer le fichier d'origine "video1.asf" en "vid.asf"
- lancer le batch
- attendre un temps indéterminé selon la taille de la vidéo (typiquement 2 à 60 secondes)
- renommer le nouveau fichier créé "blablabla.avi" en "video1.avi" pour qu'on retrouve le nom d'origine.
- supprimer le fichier "vid.asf"
- recommencer avec le fichier "video2.asf"
- etc.


Quelqu'un aurait-il une solution toute prête pour qu'en lançant 1 fois le batch il soit possible d'automatiser toutes les tâches que nous réalisons manuellement ?

Merci d'avance de votre aide :)
A voir également:

1 réponse

barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 907
Modifié le 12 oct. 2020 à 20:59
Bonjour,

Ce script devrait répondre à tes attentes :

@echo off
setlocal enabledelayedexpansion

set ext1=asf
set ext2=avi

:debut

set "titre="

:: ---------------------------------------------------
:: on choisit un fichier à traiter
:: ---------------------------------------------------

for /f "delims=" %%A in ('2^>nul dir /b *.%ext1% ^| sort /r') do (

if /i "%%~xA"==".%ext1%" (set "titre=%%~nA" & title %%~A)

)

:: --------------------------------------------------------------
:: on quitte le script s'il n'y a plus de fichiers à traiter
:: --------------------------------------------------------------

if not defined titre (exit /b 0)

:: ---------------------------------------------------
:: on liste les fichiers .avi avant traitement
:: ---------------------------------------------------

dir /b *.%ext2% > liste_pretraitement.txt

:: ---------------------------------------------------
:: on convertit le fichier video
:: ---------------------------------------------------

appli.exe !titre!.%ext1%

:: ---------------------------------------------------------------------
:: on recherche le fichier .avi et on le renomme comme l'original
:: ---------------------------------------------------------------------

for /f "delims=" %%B in ('2^>nul dir /b *.%ext2%') do (

find "%%~B" liste_pretraitement.txt >nul || ren "%%~B" "!titre!.%ext2%"

)

:: ---------------------------------------------------
:: on supprime la video "source"
:: ---------------------------------------------------

if exist "!titre!.%ext2%" (del /f /q "!titre!.%ext1%")

:: ---------------------------------------------------
:: on passe à la video suivante
:: ---------------------------------------------------

goto :debut


J'ai conçu le script de manière à ce que tu puisses rajouter des fichiers .asf pendant son exécution, comme cela tu n'as pas besoin de relancer le script plusieurs fois si tu dois ajouter de nouvelles vidéos entretemps.

Concernant le fait de renommer "video1.asf" en "vid.asf", je trouve cette opération inutile, j'ai donc fait en sorte de trouver directement le fichier de sortie et de le renommer comme l'original.

J'ai mis pas mal de commentaires pour que tu puisses comprendre le déroulement.

Si tu as des questions n'hésite pas.


0