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