Batch simple mais qui ne marche pas
lossius30
Messages postés
21
Date d'inscription
Statut
Membre
Dernière intervention
-
lossius30 Messages postés 21 Date d'inscription Statut Membre Dernière intervention -
lossius30 Messages postés 21 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous !
Alors voilà, je suis en train de créer un tout petit fichier batch mais pour je ne sais quelle raison, il plante !
Voici ce que je souhaite faire :
J'ai un executable (ffmpeg.exe, il recevra une ligne de commande) et mon fichier batch (Compresser.bat), le but est simplement avec un drag & drop de lancer l'encodage d'une vidéo, ca marche très bien, a part si j'ajoute une condition particuliere.
Ce fichier marche :
Ce fichier ne marche pas :
Donc en gros, c'est le if "%1"=="" qui faire foirer.
Quelqu'un aurait une piste ?
Alors voilà, je suis en train de créer un tout petit fichier batch mais pour je ne sais quelle raison, il plante !
Voici ce que je souhaite faire :
J'ai un executable (ffmpeg.exe, il recevra une ligne de commande) et mon fichier batch (Compresser.bat), le but est simplement avec un drag & drop de lancer l'encodage d'une vidéo, ca marche très bien, a part si j'ajoute une condition particuliere.
Ce fichier marche :
@echo off set dir=%~dp0 set exe="%dir%ffmpeg.exe" set out="%dir%out.avi" set in=%1 if exist %out% echo ERREUR : Le fichier out.avi est present (surement une video precedement compressee), supprimez-le puis recommencez... & pause & exit %exe% -i %in% -acodec libmp3lame -ar 44100 -ab 128k -ac 2 -vcodec copy -threads 2 -y %out% pause & exit
Ce fichier ne marche pas :
@echo off set dir=%~dp0 set exe="%dir%ffmpeg.exe" set out="%dir%out.avi" set in=%1 if exist %out% echo ERREUR : Le fichier out.avi est present (surement une video precedement compressee), supprimez-le puis recommencez... & pause & exit if "%1"=="" echo Glissez/Deposez votre fichier .AVI sur Compresser.bat & pause & exit %exe% -i %in% -acodec libmp3lame -ar 44100 -ab 128k -ac 2 -vcodec copy -threads 2 -y %out% pause & exit
Donc en gros, c'est le if "%1"=="" qui faire foirer.
Quelqu'un aurait une piste ?
A voir également:
- Batch simple mais qui ne marche pas
- Iphone 14 simple - Guide
- Fichier batch - Guide
- Simple pdf - Télécharger - PDF
- Simple ocr - Télécharger - Bureautique
- Simple file locker - Télécharger - Sécurité
4 réponses
Hello,
Chez moi ça fonctionne .. enfin dans le sens ou le fichier .bat ne se ferme pas tout seul ! ( Car je n'ai pas ffmpeg.exe )
Fait attention, dans le 2ème .bat, ceci:
Est "détaché" de la commande Echo précédente, cela génère une erreur.
Sinon la condition est bonne, qu'entends-tu par "ça ne marche pas" ?
++
Chez moi ça fonctionne .. enfin dans le sens ou le fichier .bat ne se ferme pas tout seul ! ( Car je n'ai pas ffmpeg.exe )
Fait attention, dans le 2ème .bat, ceci:
supprimez-le puis recommencez... & pause & exit
Est "détaché" de la commande Echo précédente, cela génère une erreur.
Sinon la condition est bonne, qu'entends-tu par "ça ne marche pas" ?
++
En fait la ligne est coupée ici mais dans le fichier, tout est collé.
Et bien le probleme est que si je lance Compresser.bat sans faire de drag & drop d'un fichier, j'ai l'erreur "Glissez/Deposez votre fichier .AVI sur Compresser.bat"
Si le fichier out existe, j'ai l'erreur "Le fichier out.avi est present[...]"
Si je drag & drop un fichier avi, la fenetre se ferme.
Mais si je supprime la ligne "if "%1"=="" echo Glissez/Deposez votre fichier .AVI sur Compresser.bat & pause & exit" ca marche
Meme en changeant le message d'erreur, en mettant juste "Erreur" ca ne marche pas.
Et bien le probleme est que si je lance Compresser.bat sans faire de drag & drop d'un fichier, j'ai l'erreur "Glissez/Deposez votre fichier .AVI sur Compresser.bat"
Si le fichier out existe, j'ai l'erreur "Le fichier out.avi est present[...]"
Si je drag & drop un fichier avi, la fenetre se ferme.
Mais si je supprime la ligne "if "%1"=="" echo Glissez/Deposez votre fichier .AVI sur Compresser.bat & pause & exit" ca marche
Meme en changeant le message d'erreur, en mettant juste "Erreur" ca ne marche pas.
Re,
ça c'est normal étant donné que %1 est égal à rien .
C'est normal aussi, vu que la condition " If exist %out% " est juste .
Par contre, si je glisse un fichier .Avi, le .bat arrive à terme, contrairement à chez toi .
il ne me semble pas que ce soit la condition qui soit fausse, mais plutôt ta ligne de commande envoyée à ffmpeg.exe .
Rééssaye en entourant de guillemets %in% car si le chemin d'accès possède un espace, ça peut ne pas marcher
Tu peux aussi essayer d'agencer un peu mieux le code, enchaîner les commandes avec " & " c'est un peu crade ^^ .
Echappe aussi les parenthèses, c'est interprété comme du code sinon.
Dit moi si ce code fonctionne:
Et bien le probleme est que si je lance Compresser.bat sans faire de drag & drop d'un fichier, j'ai l'erreur "Glissez/Deposez votre fichier .AVI sur Compresser.bat"
ça c'est normal étant donné que %1 est égal à rien .
Si le fichier out existe, j'ai l'erreur "Le fichier out.avi est present[...]"
C'est normal aussi, vu que la condition " If exist %out% " est juste .
Par contre, si je glisse un fichier .Avi, le .bat arrive à terme, contrairement à chez toi .
il ne me semble pas que ce soit la condition qui soit fausse, mais plutôt ta ligne de commande envoyée à ffmpeg.exe .
Rééssaye en entourant de guillemets %in% car si le chemin d'accès possède un espace, ça peut ne pas marcher
Tu peux aussi essayer d'agencer un peu mieux le code, enchaîner les commandes avec " & " c'est un peu crade ^^ .
Echappe aussi les parenthèses, c'est interprété comme du code sinon.
Dit moi si ce code fonctionne:
@echo off set dir=%~dp0 set exe="%dir%ffmpeg.exe" set out="%dir%out.avi" set in=%1 if exist %out% ( echo ERREUR : Le fichier out.avi est present ^(surement une video precedement compressee^), supprimez-le puis recommencez... pause exit ) if "%1"=="" ( echo Glissez/Deposez votre fichier .AVI sur Compresser.bat pause exit ) %exe% -i "%in%" -acodec libmp3lame -ar 44100 -ab 128k -ac 2 -vcodec copy -threads 2 -y %out% pause & exit
La commande est bonne et est entourée de guillets, voici le résultat avec echo :
"C:\Documents and Settings\Lossius\Bureau\ffmpegTutoPad\ffmpeg.exe" -i "C:\Documents and Settings\Lossius\Bureau\ffmpegTutoPad\Tutoriel Comment créer un tutoriel vidéo.avi" -acodec libmp3lame -ar 44100 -ab 128k -ac 2 -vcodec copy -threads 2 -y "C:\Documents and Settings\Lossius\Bureau\ffmpegTutoPad\out.avi"
Si je la lance dans l'invité de commandes, ca marche parfaitement.
Je viens d'essayer le code que tu m'as donné, il se ferme toujours quand je fais mon drag & drop :(
Si je vire les guillemets au niveau de "%exe% -i %in%", et que j'enleve la condition :
if "%1"=="" (
echo Glissez/Deposez votre fichier .AVI sur Compresser.bat
pause
exit
)
Ca marche parfaitement
Je comprends pas du tout, ou est la logique lol?
"C:\Documents and Settings\Lossius\Bureau\ffmpegTutoPad\ffmpeg.exe" -i "C:\Documents and Settings\Lossius\Bureau\ffmpegTutoPad\Tutoriel Comment créer un tutoriel vidéo.avi" -acodec libmp3lame -ar 44100 -ab 128k -ac 2 -vcodec copy -threads 2 -y "C:\Documents and Settings\Lossius\Bureau\ffmpegTutoPad\out.avi"
Si je la lance dans l'invité de commandes, ca marche parfaitement.
Je viens d'essayer le code que tu m'as donné, il se ferme toujours quand je fais mon drag & drop :(
Si je vire les guillemets au niveau de "%exe% -i %in%", et que j'enleve la condition :
if "%1"=="" (
echo Glissez/Deposez votre fichier .AVI sur Compresser.bat
pause
exit
)
Ca marche parfaitement
Je comprends pas du tout, ou est la logique lol?