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

Signaler
-
 Clem -
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

3 réponses

Messages postés
245
Date d'inscription
mardi 21 août 2018
Statut
Membre
Dernière intervention
16 avril 2020
73
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.
Messages postés
14771
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
21 septembre 2020
576
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/informatique/windows/235-renommer-plusieurs-fichiers-a-la-fois-dans-windows/

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 ^^
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
Messages postés
18219
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
21 septembre 2020
4 995
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