[Batch] problème d'echo désactivé

- - Dernière réponse :  Clem - 1 sept. 2019 à 11:25
Bonjour tout le monde,

Je travaille dans la vidéo, et j'aimerais avec ffmpeg réaliser du traitement par lot de vidéo et photo.

Pour cela j'essaye de comprendre le langage batch mais je rencontre quelque difficulté.

je voudrais modifier la variable du for pour supprimer l’extension du fichier et la remplacer par une autre. xxxxx.mp4 vers xxxxx.mov par exemple.

Pour mieux comprend je fais un test avec un simple echo pour commencer.

Ce code m'affiche tous les fichiers trouvé dans le répertoire :


@echo off

for %%a in ("*.jpg") do (

ECHO %%a

)
pause



Maintenant j'essaye d'afficher une variable que je créé :

@echo off

for %%a in ("*.jpg") do (

ECHO %%a

set test=1234
echo %test%


)
pause


mais j'ai comme retour un "commande echo désactivée" et je ne comprend pas pourquoi.

Une fois ce problème résolu, j'aimerais utiliser la fonction %test:~0,-2% pour ne pas afficher les deux dernier caractère (le but à terme est de supprimer les 4 derniers caractères pour les remplacer par une autre extension.


Quelqu'un pourrait m'indiquer ce qui cloche ?

Merci,
Clément


Configuration: Windows / Firefox 68.0
Afficher la suite 

3 réponses

Messages postés
248
Date d'inscription
mardi 21 août 2018
Statut
Membre
Dernière intervention
8 septembre 2019
52
0
Merci
Sache que ce que tu fait ne sert à rien, les extensions de fichiers représentent des format, mp4 =/= mov !

C'est comle ecrire sur une patate : "Carotte", ça n'en reste pas moins des patates.

Si vraiment tu est sur de toi, je peux te faire ce soir un programme en VB.Net qui feras ce que tu veux.
Salut SioGabx,

J'ai écrit la modification mp3 vers mov en guise d'exemple mais en faite ce que je veux faire c'est insérer entre le nom du fichier et l'extension un indicatif comme "720p" ou "360p". Je voudrais donc supprimer l'extension, ajouter "720p" puis ajouter la même extension.

J'arrive à faire marcher une ligne de commande avec ffmpeg qui réaliser les conversions voulues, mais je n'ai pas envie de renommer les fichiers de sortie un par un donc j'essaye d'appliquer cette modification directement dans la partie "nom du fichier sortie" dans ffmpg.

Je te remercie pour ta proposition, idéalement j'aimerais comprendre comment ça marche pour pouvoir être autonome par la suite. Je ne connais pas le VB.net je vais me renseigner.
Commenter la réponse de SioGabx
Messages postés
13730
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 septembre 2019
384
0
Merci
Bonjour,

l'instruction pour renommer un fichier en batch est ren.
https://www.tutorialspoint.com/batch_script/batch_script_ren.htm

Pas besoin de passer par VB.Net.

Par contre, il existe des logiciels qui sont spécialisés dans le renommage en lot
https://www.commentcamarche.net/faq/2456-renommer-plusieurs-fichiers

Merci Whismeril,

J'utilise effectivement un logiciel très pratique pour du renommage. Dans ce cas précis vu que j'utilise déja un scripte qui génère les fichiers, j'aimerais créer le fichier directement avec le bon nom pour simplifier.


Un exemple de commande ffmpeg que j'utilise est :

ffmpeg.exe -i "%%a" -vf scale=720:-1 "LIGHT_%%a"

dans cette exemple si %%a représente "photo1.jpg", j'aimerais que le nouveau fichier créé ai pour nom "photo1_light.jpg". Pour l'instant le fichier est nommé "LIGHT_photo1.jpg".

quelle syntaxe pourrait me faire faire [%%a] - [4 caractères] + [_LIGHT] + [.jpg] ?
J'ai finalement trouvé :

%%~na%LIGHT_.mp4

Je capte pas trop pourquoi mais en tout cas ça marche ^^
Commenter la réponse de Whismeril
0
Merci
Si quelqu'un peut m'expliquer pourquoi ce code ne fonctionne pas je suis preneur (retourne "commande echo désactivée" :

@echo off

for %%a in ("*.jpg") do (

ECHO %%a

set test=1234
echo %test%


)
pause
dubcek
Messages postés
17821
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
11 septembre 2019
4448 -
hello
@echo off
setlocal enabledelayedexpansion
for %%a in ("*.jpg") do (
ECHO %%a
set test=1234
echo !test!
)
pause
Ok merci :)
Je vais tester ça et essayer de comprendre
Commenter la réponse de Clem