Board logo

标题: [文件操作] 求助批处理重命名问题,对高手来说可能很简单,对低手却很棘手 [打印本页]

作者: zhqiao    时间: 2024-8-2 22:11     标题: 求助批处理重命名问题,对高手来说可能很简单,对低手却很棘手

问题很简单, 就是如何重命名各子目录下的所有文件为 "子目录名+当前文件名"

下载了很多TV电视剧, 带有字幕子目录和文件, 比如:
E:\TV\Better.Call.Saul.S01\Subs\Better.Call.Saul.S01E01.1080p\3_English.srt    4_Chinese.srt   ...
   ......
E:\TV\Better.Call.Saul.S05\Subs\Better.Call.Saul.S05E08.1080p\3_English.srt    4_Chinese.srt   ...
很多季很多集,  所以有很多字幕子目录, 子目录下都有 3_English.srt 等等同名文件


就想把文件 3_English.srt 和 4_Chinese.srt  等等所有字幕文件重命名为 Better.Call.Saul.S01E01.1080p~3_English.srt ....
这样能减少子目录和同名字幕文件, 播放时拖放字幕更便利.

请高手提示一下怎么实现 ?
作者: 77七    时间: 2024-8-2 22:49

  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "delims=" %%i in ('dir /b /s /a-d *.srt') do (
  4. for /f "delims=" %%d in ("%%~dpi.") do (
  5. echo ren "%%i" "%%~nxd~%%~nxi"
  6. )
  7. )
  8. pause
复制代码

显示正确,删除echo 再次执行。
作者: zhqiao    时间: 2024-8-2 22:53

本帖最后由 zhqiao 于 2024-8-2 22:57 编辑

修改了某个高手的一个bat, 实现了目的. 虽不知其所以然....

如有存条件错误请指正


:: 240802
:: 重命名当前目录的各子目录下的文件名为 "其父目录名+当前文件名"
:: 即以当前目录下的各子目录名为前缀, 添加到各子目录下的所有文件前

@echo off
cd /d "%~dp0"
for /f "delims=" %%i in ('dir /b /s /a-d *.srt *.ass') do (
    for %%j in ("%%i\..") do (
        ren "%%i" "%%~nxj__%%~nxi"
    )
)
作者: zhqiao    时间: 2024-8-2 23:05

回复 2# 77七


    非常感谢.
刚刚自己修改了一个其他帖子里的bat, 能实现但有一句语法不同, 请问以下2句有什么区别?

A)        for /f "delims=" %%d in ("%%~dpi.") do (

B)     for %%j in ("%%i\..") do (
作者: 77七    时间: 2024-8-2 23:32

回复 4# zhqiao


  条条大路通罗马
如 d:\a\.  应该等同于 d:\a ,使用%%~nxd 扩展路径到文件夹名;
d:\a\1.txt\.. 两个点表示上级目录吧,使用 %%~nxd 同样扩展。
解释的不知道对不对,仅供参考。
作者: zhqiao    时间: 2024-8-2 23:45

本帖最后由 zhqiao 于 2024-8-2 23:48 编辑

回复 5# 77七


还需再读点dos教程补补才能读懂,   非常感谢 !
作者: ppll2030    时间: 2024-8-2 23:51

本帖最后由 ppll2030 于 2024-8-2 23:54 编辑

把代码保存为bat文件,放在TV文件夹下,运行后会把子文件夹下所有srt字幕文件更名
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /s /a-d *.srt') do (
  4. for %%j in ("%%i") do (
  5. set "d=%%~dpj"
  6. cd/d "!d!.."
  7. call set "d=%%d:!cd!\=%%"
  8. rem 运行确认无误,再删除echo,执行更名
  9. ren %%j "!d:\=-!%%~nxj"
  10. )
  11. )
  12. pause
复制代码

作者: zhqiao    时间: 2024-8-3 00:07

回复 7# ppll2030


    收下, 感谢相助 !
作者: Batcher    时间: 2024-8-4 10:01

回复 1# zhqiao


3.3 以子文件夹名称作为文件名的前缀
https://mp.weixin.qq.com/s/_1qzhObTSbc6HRpJy4onhQ




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2