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

Signaler
-
Messages postés
12726
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
16 octobre 2020
-
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 :)

1 réponse

Messages postés
12726
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
16 octobre 2020
3 674
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.



“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”