标题: [文件操作] 【已解决】目录下及其全部子目录下的 图片通过批处理和ffmpeg转换为别的格式? [打印本页]
作者: tcasdsss 时间: 2014-9-11 16:39 标题: 【已解决】目录下及其全部子目录下的 图片通过批处理和ffmpeg转换为别的格式?
问个问题 怎样把一个目录下及其全部子目录下的 图片通过批处理和ffmpeg转换为别的格式?
@echo off
for /r . %%a in (*.jpg) do C:\bin\ffmpeg.exe -i %%~na.jpg -pix_fmt yuv420p -vcodec libx265 -preset placebo -x265-params qp=32 %%~na.mkv
for /r . %%a in (*.png) do C:\bin\ffmpeg.exe -i %%~na.png -pix_fmt yuv420p -vcodec libx265 -preset placebo -x265-params qp=32 %%~na.mkv
@pause
我现在写的……
结果出错
作者: tcasdsss 时间: 2014-9-11 16:42
我认为错误的原因应该是目录对不上 但是我不知道怎么去改……
作者: tcasdsss 时间: 2014-9-11 17:26
会了 不过这样很低效率啊……
@echo off
for /f "delims=" %%i in ('dir /s /ad /b "c:\1212"') do (
cd /d %%i
for /r . %%a in (*.jpg) do C:\bin\ffmpeg.exe -i %%~na.jpg -pix_fmt yuv420p -vcodec libx265 -preset placebo -x265-params qp=32 %%~na.mkv
for /r . %%a in (*.png) do C:\bin\ffmpeg.exe -i %%~na.png -pix_fmt yuv420p -vcodec libx265 -preset placebo -x265-params qp=32 %%~na.mkv
)
@pause
作者: CrLf 时间: 2014-9-11 19:15
同上,ffmpeg支持文件序列,可以的话建议用序列来实现
作者: CrLf 时间: 2014-9-11 19:15
噢,好吧,没注意是包含子目录
作者: tcasdsss 时间: 2014-9-11 20:01
本帖最后由 tcasdsss 于 2014-9-11 20:25 编辑
回复 5# CrLf
那该怎么整? 最关键的是目录很多 子目录也有好几级
大神能不能做个判断语句 目录下没有jpg和png就不搞了 直接跳过 目录下有图片才搞
作者: tcasdsss 时间: 2014-9-11 20:04
现在的结果仍然是先出错 再去转文件 我要转7万个文件 效率就太低了 怎么才能解决呢?
作者: CrLf 时间: 2014-9-12 00:39
回复 7# tcasdsss
7万个有点多...
百度了下,试了下好像是没辙,mkfifo 命令在 win 下貌似无反应
http://blog.csdn.net/vblittleboy/article/details/8560065
作者: DAIC 时间: 2014-9-12 01:01
- @echo off
- for /f "delims=" %%i in ('dir /s /a-d /b "C:\1212" ^| findstr "jpg$ png$"') do (
- C:\bin\ffmpeg.exe -i "%%~nxi" -pix_fmt yuv420p -vcodec libx265 -preset placebo -x265-params qp=32 "%%~ni.mkv"
- )
- pause
复制代码
作者: xudaweb 时间: 2014-9-12 09:42
复制代码
回复 9# DAIC
请教一下,$这个字符在这句的意思是什么?
我试了一下,挺给力的,能快速的查找。
作者: DAIC 时间: 2014-9-12 10:49
回复 10# xudaweb
http://bbs.bathome.net/thread-24-1-1.html
作者: tcasdsss 时间: 2014-9-12 11:11
回复 9# DAIC
悲剧还是会出错…… ffmpeg还是先出错再转 之前还有一段时间会黑着效率更低……
作者: DAIC 时间: 2014-9-12 11:16
回复 12# tcasdsss
试试这个是否报错:- @echo off
- for /f "delims=" %%i in ('dir /s /a-d /b "C:\1212" ^| findstr "jpg$ png$"') do (
- echo 正在处理 %%i
- C:\bin\ffmpeg.exe -i "%%i" -pix_fmt yuv420p -vcodec libx265 -preset placebo -x265-params qp=32 "%%~ni.mkv"
- )
- pause
复制代码
先解决报错的问题,效率的问题稍后再优化。
作者: tcasdsss 时间: 2014-9-12 11:19
本帖最后由 tcasdsss 于 2014-9-12 11:28 编辑
回复 13# DAIC
报错是ffmpeg报错…… ffmpeg只能转%cd%目录下的文件 输出的是子目录就会报错 如果能自动换 %cd%的位置就应该不出错了
就是说要不停地变换 %cd%
作者: tcasdsss 时间: 2014-9-12 11:27
回复 13# DAIC
和我一楼出现了同样的错误 只报错不转换
作者: xudaweb 时间: 2014-9-12 11:30
回复 11# DAIC
感谢,明白了。
作者: DAIC 时间: 2014-9-12 11:36
回复 14# tcasdsss
你的ffmpeg.exe从哪里下载的?什么版本?我试试
作者: tcasdsss 时间: 2014-9-12 11:46
回复 17# DAIC
http://ffmpeg.zeranoe.com/builds/win64/shared/ 9月10号的 64位share版
作者: DAIC 时间: 2014-9-12 13:27
测试代码如下:- @echo off
- set "PATH=%PATH%;C:\ffmpeg-20140911-git-5e3da25-win64-shared\bin"
- set "folder=c:\1212"
- for /f "delims=" %%i in ('dir /s /a-d /b "%folder%" ^| findstr /i "jpg$ png$"') do (
- ffmpeg.exe -i "%%i" -pix_fmt yuv420p -vcodec libx265 -preset placebo -x265-params qp=32 "%%i.mkv"
- )
- pause
复制代码
执行批处理之前:
c:\1212>dir /b /s /a-d
c:\1212\1_1.jpg
c:\1212\1_2.png
c:\1212\folder1\1_1_1.jpg
c:\1212\folder1\1_1_2.png
执行批处理之后:
c:\1212>dir /b /s /a-d
c:\1212\1_1.jpg
c:\1212\1_1.jpg.mkv
c:\1212\1_2.png
c:\1212\1_2.png.mkv
c:\1212\folder1\1_1_1.jpg
c:\1212\folder1\1_1_1.jpg.mkv
c:\1212\folder1\1_1_2.png
c:\1212\folder1\1_1_2.png.mkv
可以看到,-i "%%i" 和 最后的 "%%i.mkv" 都可以使用完整的路径名,不需要先cd再使用相对路径。
但是有一点,如果文件名或者文件夹名包含中文,会报错:Could find no file ...
作者: tcasdsss 时间: 2014-9-12 13:28
本帖最后由 tcasdsss 于 2014-9-12 13:29 编辑
回复 19# DAIC
文件夹名应该没问题 ffmpeg不支持的应该是中文文件名
输出的文件能否去除.jpg这样的字符 双扩展名后边会有麻烦……
作者: tcasdsss 时间: 2014-9-12 13:33
回复 19# DAIC
额好像还真是不支持中文目录…… 可我的目录都是中文的…… 还是只能用3l的办法了……
作者: DAIC 时间: 2014-9-12 13:33
回复 20# tcasdsss - @echo off
- set "PATH=%PATH%;C:\ffmpeg-20140911-git-5e3da25-win64-shared\bin"
- set "folder=c:\1212"
- for /f "delims=" %%i in ('dir /s /a-d /b "%folder%" ^| findstr /i "jpg$ png$"') do (
- ffmpeg.exe -i "%%i" -pix_fmt yuv420p -vcodec libx265 -preset placebo -x265-params qp=32 "%%~dpi%%~ni.mkv"
- )
- pause
复制代码
这样可以去掉图片的扩展名
作者: tcasdsss 时间: 2014-9-12 13:38
本帖最后由 tcasdsss 于 2014-9-12 13:39 编辑
回复 22# DAIC
有没有可能用 if not exist 和goto 提高下3lbat的效率 就是当前目录下没有jpg和png 就不执行ffmpeg的命令
不支持中文文件夹没办法用…… 我转的漫画都是中文文件夹 图片名我都改成数字了……
作者: DAIC 时间: 2014-9-12 13:41
- @echo off
- set "PATH=%PATH%;C:\ffmpeg-20140911-git-5e3da25-win64-shared\bin"
- set "folder=c:\1212"
- for /f "delims=" %%i in ('dir /s /a-d /b "%folder%" ^| findstr /i "jpg$ png$"') do (
- cd /d "%%~dpi"
- ffmpeg.exe -i "%%~nxi" -pix_fmt yuv420p -vcodec libx265 -preset placebo -x265-params qp=32 "%%~ni.mkv"
- )
- pause
复制代码
这样可以解决中文文件夹的问题
作者: tcasdsss 时间: 2014-9-12 13:43
回复 24# DAIC
牛逼! 感谢! 我还有另一个关于nconvert 的问题求解答
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |