具有特定扩展名的批处理脚本输出文件
Batch script output file with a specific extension
这对你来说可能是个简单的问题。
我尝试更改此脚本,使输出文件扩展名为 .mkv,但我不知道要更改什么。
经过多次测试,也许你就会知道答案。
@echo off
cls
set rootfolder="D:\My Videos\test"
echo Enumerating all MKVs under %rootfolder% and its subfolders.
echo.
for /r %rootfolder% %%a in (*.mkv, *.avi, *.mp4) do (
for /f %%b in ('mkvmerge -I "%%a" ^| find /c /i "language:heb"') do (
if [%%b]==[1] (
echo "%%a" has Hebrew subtitles
pause
) else (
echo.
echo "%%a" doesn't have Hebrew subtitles
mkvmerge -q -o "%%~dpna (heb Subs)%%~x" -S "%%a" --language 0:heb "%%~dpna.srt"
if errorlevel 1 (
echo Warnings/errors generated during remuxing, original file not deleted
) else (
del /f "%%a"
del /f "%%~dpna.srt"
echo Successfully remuxed to "%%~dpna (heb Subs)%%~xa", original file deleted
)
pause
echo.
)
)
)
在 mkvmerge
行中,将 %%~x
更改为 .mkv
mkvmerge -q -o "%%~dpna (heb Subs).mkv" -S "%%a" --language 0:heb "%%~dpna.srt"
现在,它正在从源文件中提取原始扩展。
mkvmerge -q -o "%%~dpna (heb Subs)%%~x" -S "%%a" --language 0:heb "%%~dpna.srt"
应该是
mkvmerge -q -o "%%~dpna (heb Subs)%%~xa" -S "%%a" --language 0:heb "%%~dpna.srt"
这将添加原始文件的原始扩展名 %%a
。使用 %%~x
它将添加 nothing 因为 %%x
未定义并且 ~
从该值中删除引号。
但是 因为你想要输出为 .mkv
然后
mkvmerge -q -o "%%~dpna (heb Subs).mkv" -S "%%a" --language 0:heb "%%~dpna.srt"
您可能还需要更改
echo 成功重新传输到“%%~dpna (heb Subs)%%~xa”,原始文件已删除
到
echo Successfully remuxed to "%%~dpna (heb Subs).mkv", original file deleted
如果你想要一个合理的报告行。
如果您告诉我们当前的输出是什么,既可以作为示例文件名,也可以作为错误报告,那就更容易了。
这对你来说可能是个简单的问题。
我尝试更改此脚本,使输出文件扩展名为 .mkv,但我不知道要更改什么。
经过多次测试,也许你就会知道答案。
@echo off
cls
set rootfolder="D:\My Videos\test"
echo Enumerating all MKVs under %rootfolder% and its subfolders.
echo.
for /r %rootfolder% %%a in (*.mkv, *.avi, *.mp4) do (
for /f %%b in ('mkvmerge -I "%%a" ^| find /c /i "language:heb"') do (
if [%%b]==[1] (
echo "%%a" has Hebrew subtitles
pause
) else (
echo.
echo "%%a" doesn't have Hebrew subtitles
mkvmerge -q -o "%%~dpna (heb Subs)%%~x" -S "%%a" --language 0:heb "%%~dpna.srt"
if errorlevel 1 (
echo Warnings/errors generated during remuxing, original file not deleted
) else (
del /f "%%a"
del /f "%%~dpna.srt"
echo Successfully remuxed to "%%~dpna (heb Subs)%%~xa", original file deleted
)
pause
echo.
)
)
)
在 mkvmerge
行中,将 %%~x
更改为 .mkv
mkvmerge -q -o "%%~dpna (heb Subs).mkv" -S "%%a" --language 0:heb "%%~dpna.srt"
现在,它正在从源文件中提取原始扩展。
mkvmerge -q -o "%%~dpna (heb Subs)%%~x" -S "%%a" --language 0:heb "%%~dpna.srt"
应该是
mkvmerge -q -o "%%~dpna (heb Subs)%%~xa" -S "%%a" --language 0:heb "%%~dpna.srt"
这将添加原始文件的原始扩展名 %%a
。使用 %%~x
它将添加 nothing 因为 %%x
未定义并且 ~
从该值中删除引号。
但是 因为你想要输出为 .mkv
然后
mkvmerge -q -o "%%~dpna (heb Subs).mkv" -S "%%a" --language 0:heb "%%~dpna.srt"
您可能还需要更改 echo 成功重新传输到“%%~dpna (heb Subs)%%~xa”,原始文件已删除
到
echo Successfully remuxed to "%%~dpna (heb Subs).mkv", original file deleted
如果你想要一个合理的报告行。
如果您告诉我们当前的输出是什么,既可以作为示例文件名,也可以作为错误报告,那就更容易了。