Windows批处理脚本修改需求:删除无对应视频文件的带扩展名.idx索引文件
Windows批处理脚本修改需求:删除无对应视频文件的带扩展名.idx索引文件
嘿,我来帮你搞定这个批处理脚本的问题!你现在的情况是,索引文件是[视频全名].idx的格式(比如One.mts.idx对应One.mts),之前的脚本只认和视频文件名完全一致的.idx,现在咱们改一下脚本,让它能自动匹配这种带视频扩展名的索引文件,还能兼容多种视频格式,不会误删其他视频的索引。
直接上修改后的脚本,你可以直接用:
@echo off setlocal enabledelayedexpansion :: 遍历当前目录下所有的.idx索引文件 for %%F in (*.idx) do ( :: 提取索引文件名去掉最后的.idx后缀,得到对应的视频文件名 set "video_file=%%~nF" :: 检查对应的视频文件是否存在 if not exist "!video_file!" ( echo 正在删除无对应视频的索引文件:"%%F" del "%%F" ) ) endlocal echo 索引文件清理完成! pause
我给你拆解下这个脚本的逻辑,方便你理解:
@echo off:关掉命令行的命令回显,让输出只显示咱们需要的提示,不会乱糟糟的setlocal enabledelayedexpansion:这是批处理里的实用小技巧,因为在for循环里要读取和修改变量,必须开启延迟环境变量扩展,否则变量值会出错for %%F in (*.idx) do (...):把当前目录下所有.idx文件挨个过一遍set "video_file=%%~nF":这里是核心!%%~nF会取出.idx文件的"主文件名"——比如对于One.mts.idx,它的主文件名就是One.mts,正好就是咱们要找的视频文件名- 接下来检查这个视频文件是否存在,如果不存在,就把对应的
.idx文件删掉 - 最后结束局部环境,提示清理完成,暂停让你确认结果
这个脚本的优势特别贴合你的需求:不管你目录里有.mts、.mp4还是其他格式的视频,只要.idx文件是[视频全名].idx的格式,就能精准匹配,不会误删那些有对应视频的索引文件,也不会因为目录里有多种视频格式就乱删。
要是你之后只想针对某几种视频格式的索引文件处理(比如只清理.mts对应的.idx),只需要把for循环里的*.idx改成*.mts.idx就行,灵活性拉满!
备注:内容来源于stack exchange,提问作者Sark
相关产品推荐
相关产品推荐

