betreft *.bat file
Op een website vond ik een (batch)code om Srt-files to tevoegen aan MKV-files
en deze code werkt perfect,zolang er maar geen spatie in de filename voorkomt
"Iemand" heeft deze code al eens gebruikt en is toen ook tegen dit probleem aangelopen
de persoon zei er het volgende over:
"Thank you for the help. I experienced errors when I read files like "I am Happy.mp4" and "I am Happy.srt" and fixed it by adding quotation marks to "%~1" and each of the "mkvTargetName%." variables. I also found out that mkvmerge needs to load only the idx file in sub/idx sets. Again, I appreciate the support."
volgens zijn zeggen heeft dit dus te maker met "quotation marks" rond de variabelen.
helaas is mijn engels niet zo goed om dit te vragen op de bron website.
zelf krijg ik het niet voor elkaar.
vandaar dat ik de vraag hier parkeer,
kan iemand mij hier mee helpen.


Code onderaan.
Outputfile zonder spaties

Met spaties gaat het fout

Op een website vond ik een (batch)code om Srt-files to tevoegen aan MKV-files
en deze code werkt perfect,zolang er maar geen spatie in de filename voorkomt
"Iemand" heeft deze code al eens gebruikt en is toen ook tegen dit probleem aangelopen
de persoon zei er het volgende over:
"Thank you for the help. I experienced errors when I read files like "I am Happy.mp4" and "I am Happy.srt" and fixed it by adding quotation marks to "%~1" and each of the "mkvTargetName%." variables. I also found out that mkvmerge needs to load only the idx file in sub/idx sets. Again, I appreciate the support."
volgens zijn zeggen heeft dit dus te maker met "quotation marks" rond de variabelen.
helaas is mijn engels niet zo goed om dit te vragen op de bron website.
zelf krijg ik het niet voor elkaar.
vandaar dat ik de vraag hier parkeer,
kan iemand mij hier mee helpen.


Code onderaan.
Outputfile zonder spaties

Met spaties gaat het fout

Code:
@ECHO OFF
::'===========================================================
:: mkvmerger.bat
:: mkvmerge recipe.
::
:: Written by Shawn K. Hall
::
::'===========================================================
::setlocal enableDelayedExpansion
::'===========================================================
where /q mkvmerge.exe
IF NOT "%errorlevel%"=="0" GOTO nomkvmerge
::'===========================================================
::'===========================================================
:input
::'===========================================================
:: defaults
IF "%mkvTargetDir%"=="" SET mkvTargetDir=Done\
IF "%~1"=="" GOTO all
GOTO next
::'===========================================================
::'===========================================================
:next
IF /I "%~1"=="*" SHIFT&&GOTO all
IF /I "%~1"=="all" SHIFT&&GOTO all
IF /I "%~1"=="" GOTO done
SET inparam=%~1
IF "%~1"=="" GOTO none
SET "inparam2=%inparam:^*=%"
IF NOT "%inparam2%"=="%inparam%" SHIFT&&GOTO many
SET inparam2=
GOTO process
::'===========================================================
::'===========================================================
:all
FOR %%x IN ("avi" "m4v" "mkv" "mp4" "mpeg" "mpegts" "mpg") DO (
IF EXIST *.%%x FORFILES /M *.%%x /c "cmd /c CALL mkvmerger.bat ^"@file^""
)
GOTO next
::'===========================================================
::'===========================================================
:many
IF EXIST "%inparam%" FORFILES /M %inparam% /c "cmd /c CALL mkvmerger.bat ^"@file^""
GOTO next
::'===========================================================
::'===========================================================
:destexists
ECHO. The destination file already exists:
ECHO. "%mkvTarget%"
ECHO. Are you sure you haven't already processed this file^?
ECHO.
GOTO done
::'===========================================================
::'===========================================================
:none
ECHO. Error: You must pass the source video file or "^*" as an argument.
ECHO.
GOTO done
::'===========================================================
::'===========================================================
:nomkvmerge
ECHO. Error: mkvmerge is either not installed or is not in the path.
ECHO.
GOTO done
::'===========================================================
::'===========================================================
:process
SET "mkvSources=%~1"
SET mkvTarget=
SET "mkvTargetName=%~n1"
SET mkvTargetExt=.mkv
SET "mkvTarget=%mkvTargetDir%\%mkvTargetName%%mkvTargetExt%"
IF EXIST "%mkvTarget%" GOTO destexists
IF NOT EXIST "%mkvTargetDir%" MKDIR "%mkvTargetDir%"
ECHO.
ECHO.Starting with "%mkvTarget%"
:processing
IF EXIST "%mkvTargetName%.srt" SET "mkvSources=%mkvSources% %mkvTargetName%.srt"
IF EXIST "%mkvTargetName%.idx" SET "mkvSources=%mkvSources% %mkvTargetName%.idx"
IF EXIST "%mkvTargetName%.ogg" SET "mkvSources=%mkvSources% %mkvTargetName%.ogg"
IF EXIST "%mkvTargetName%.mp3" SET "mkvSources=%mkvSources% %mkvTargetName%.mp3"
IF EXIST "%mkvTargetName%.aac" SET "mkvSources=%mkvSources% %mkvTargetName%.aac"
mkvmerge.exe -o "%mkvTarget%" %mkvSources%
:processingDone
ECHO.Done with "%mkvTarget%"
ECHO.
GOTO done
::'===========================================================
::'===========================================================
:done
Laatst bewerkt: