BAT脚本:遍历当前文件夹/目录下的所有子目录,如果存在poster.jpg图片文件,则在相同位置拷贝一份并命名为fanart.jpg

498次阅读
没有评论

1 脚本需求

最近用三方下载器下载了不少 B 站视频用来打花时间,资源刮削的挺齐备的,字幕、弹幕、nfo、视频文件和 poster 海报图片(见下图1)。美中不足的是,没有 fanart 封面图片。因为 poster.jpg 文件都是宽屏的,索性就将所有 poster.jpg 图片复制一份并重命名为 fanart.jpg 当做宽屏封面使用。比较麻烦的是,视频文件都是存放在“分类-up主-视频名称”三级目录下(见下图1),且数量较多,只能通过脚本来尝试批量完成了。

BAT脚本:遍历当前文件夹/目录下的所有子目录,如果存在poster.jpg图片文件,则在相同位置拷贝一份并命名为fanart.jpg
P1.下载完成的 B 站视频及多级目录结构
© 由 IT摇篮曲 提供

2 功能说明

遍历指定目录下的所有子目录(含子子目录、子子子目录……),不限深度;

当在某个子目录下存在指定文件 poster.jpg 时,在相同位置/路径拷贝一份 poster.jpg 文件并重命名为 fanart.jpg。

3 详细代码

@echo off
::
::脚本功能:
::遍历目录查找指定文件,如果存在则拷贝一份并重命名
::
set title=批量复制poster.jpg为fanart.jpg

::开启变量延迟
setlocal enabledelayedexpansion

::设置源文件和目标文件
set SourceFile=poster.jpg
set TargetFile=fanart.jpg

::遍历当前目录及其所有子目录
for /R %%i in (*%SourceFile%) do (
::确保目标文件不存在
if not exist "%%~dpi%TargetFile%" (
echo %SourceFile%
copy "%%~dpi%SourceFile%" "%%~dpi%TargetFile%"
echo Copied %TargetFile% to "%%~dpi"
)
)

endlocal
pause

释义:
*%SourceFile%:“*”是通配符,表示任意字符,合起来的含义是匹配任何含有“…\poster.jpg”的绝对路径;

%%~dpi:仅将 %I 扩充到一个驱动器号和路径,即 poster.jpg 文件去除文件名称后的完整路径;

For /R %%i:省略了指定遍历的根目录路径,完整命令为 “For /R [Drive:]Path /R %%i”,如果省略不指定,则默认根目录路径为当前 bat 脚本文件所在路径。所以,双击运行本 bat 脚本即可,千万不要右键以管理员身份运行!

4 使用说明及示例

将上述代码复制到记事本,另存为 .bat 文件,然后将该 bat 文件拖放到需要遍历子目录的文件夹下,双击运行。

BAT脚本:遍历当前文件夹/目录下的所有子目录,如果存在poster.jpg图片文件,则在相同位置拷贝一份并命名为fanart.jpg
P1.遍历子目录并在存在 poster.jpg 文件的目录下拷贝创建 fanart.jpg 文件
© 由 IT摇篮曲 提供
正文完
 
itylq
版权声明:本站原创文章,由 itylq 2024-06-19发表,共计1165字。
转载说明:本站文章遵循CC-4.0国际许可协议,转载请注明出处(格式如“来源:IT摇篮曲www.itylq.com")。
评论(没有评论)
验证码