找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 22217|回复: 5

[文件操作] 【已解决】求助批处理通过文件名列表对文件进行重命名

[复制链接]
发表于 2024-1-4 13:57:14 | 显示全部楼层 |阅读模式
本帖最后由 annwayili 于 2024-1-4 20:45 编辑

试写了一个BAT但不成功,所以特向大家求助!

当前目录下有一些MP4文件和其它文件。
拟通过本目录下的文件名列表(武松合集文件列表.txt),
需求1:对本目录下的部分文件按该列表中的名字进行重命名。 (其实就是在视频合集文件名前面加上序号)
需求2:对在列表中有,但本目录下不存在的文件,新建立一个”重命名失败.txt”。

本目录下的文件如下:
武松合集文件列表.txt
武松打虎 喝酒.mp4
武松打虎 上山.mp4
武松打虎 认兄.mp4
林冲棒打洪教头.mp4     ----->属于无关的其它文件
鲁智深拳打镇关西.mp4  ----->属于无关的其它文件
ABC.txt                    ------>属于无关的其它文件

”武松合集文件列表.txt“中的内容如下:
001武松打虎 喝酒
002武松打虎 上山
003武松打虎 遇虎
004武松打虎 认兄

最终的处理结果希望当前目录下的文件如下:
武松合集文件列表.txt
001武松打虎 喝酒.mp4
002武松打虎 上山.mp4
003武松打虎 认兄.mp4                                           ----->这里写错了,应该是004武松打虎 认兄
林冲棒打洪教头.mp4     ----->属于无关的其它文件,不变
鲁智深拳打镇关西.mp4  ----->属于无关的其它文件,不变
ABC.txt                    ------>属于无关的其它文件,不变
重命名失败.txt            ------>新增文件,保存处理失败的内容

尝试了一个批处理,但确实水平有限,无论是从判断字符串是否相同,还是用文件是否存在等方式,都无法做到主要目的,所以就法继续下去了。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1 delims=" %%a in (武松合集文件列表.txt) do (
  4. set str1=%%a
  5. set var1=!str1:~3!
  6. for %%b in (*.mp4) do  (
  7. if  !%%b! equ !var1! (
  8. echo %%aOK
  9. ) else echo !var1! 不OK
  10. )
  11. )
  12. pause
复制代码
以上情况,具体也见下图:




请各位指导!非常感谢!

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2024-1-4 16:06:55 | 显示全部楼层
不明白到底是遇虎失败还是认兄失败?
发表于 2024-1-4 16:22:59 | 显示全部楼层
  1. @echo off
  2. rem 批处理保存为ansi编码格式
  3. cd /d "%~dp0"
  4. for /f "useback delims=" %%a in ("武松合集文件列表.txt") do (
  5.         for /f "tokens=* delims=1234567890" %%x in ("%%a") do (
  6.                 if exist "%%x.mp4" (
  7.                         ren "%%x.mp4" "%%a.mp4"
  8.                 ) else (
  9.                         >>"重命名失败.txt" echo %%a
  10.                 )
  11.         )
  12. )
  13. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
annwayili + 1 非常完美,非常感谢

查看全部评分

 楼主| 发表于 2024-1-4 20:38:06 | 显示全部楼层
本帖最后由 annwayili 于 2024-1-4 20:46 编辑

回复 2# qixiaobin0715

不明白到底是遇虎失败还是认兄失败?


多谢关注及指出表述错误。
认兄 应该是004的前缀,我在一楼中说错了,图片也画得不对。

所以,遇虎是没能成功重命名的。

三楼的BAT是正解!非常完美,非常感谢!
发表于 2024-1-5 10:47:36 | 显示全部楼层
按照楼主的思路可以这样:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "delims=" %%a in (武松合集文件列表.txt) do (
  4.     set str=%%a
  5.     if exist "!str:~3!.mp4" (
  6.         ren "!str:~3!.mp4" "%%a.mp4"
  7.     ) else (
  8.         echo,%%a
  9.     )
  10. ))>"重命名失败.txt"
  11. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
annwayili + 1 十分感谢

查看全部评分

 楼主| 发表于 2024-1-5 21:07:55 | 显示全部楼层
回复 5# qixiaobin0715

十分感谢!同样能达到希望的效果!
同时,我学到更多了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 05:32 , Processed in 0.021845 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表