标题: [文件操作] [已解决]求助批处理怎样删除_track(任意1个或2个数字)_[chi]文件? [打印本页]
作者: 1139054012 时间: 2024-5-4 21:00 标题: [已解决]求助批处理怎样删除_track(任意1个或2个数字)_[chi]文件?
本帖最后由 1139054012 于 2024-5-6 22:15 编辑
删除文件名最后]后面,如果包含
_track3_[chi]
_track4_[chi]
_track5_[chi]
_track11_[chi]
举例
这是文件1_track1_[chi].srt
删除
_track4_[chi]
我希望结果重命名
这是文件1.srt
作者: 77七 时间: 2024-5-5 00:19
- @echo off
- cd /d "%~dp0"
- for /f "delims=" %%i in ('dir /b /a-d "*_track*_[chi].srt"') do (
- set "str=%%i"
- setlocal enabledelayedexpansion
- for /f "delims=|" %%a in ("!str:_track=|!") do (
- endlocal
- ren "%%i" "%%a%%~xi"
- )
- )
- pause
复制代码
作者: Five66 时间: 2024-5-5 06:59
- @echo off&pause
- for %%a in (*.srt) do (
- set file=%%a
- for /f "delims=" %%b in ('echo^,"%%file:~-17%%"^|findstr /x \"_*track[0-9][0-9]*_\[chi\]\.srt\"') do set _=1
- if defined _ (
- setlocal enabledelayedexpansion
- set _@rp=!file:~-17!
- if "!_@rp:~0,1!" == "t" set _@rp=_!_@rp!
- for %%c in ("!_@rp!") do rename "!file!" "!file:%%~c=.srt!"
- endlocal
- set _=
- )
- )
- pause
复制代码
作者: aloha20200628 时间: 2024-5-5 12:24
本帖最后由 aloha20200628 于 2024-5-5 12:27 编辑
回复 1# 1139054012
假设字幕文件*.srt文件名中的 ‘被保留字段’ 不再包含 _ 字符...- @echo off
- for /f "tokens=1* delims=_" %%a in ('dir /b/a-d *_track*.srt') do (ren "%%~a_%%~b" "%%~a.srt")
- pause&exit/b
复制代码
作者: 1139054012 时间: 2024-5-5 22:17
本帖最后由 1139054012 于 2024-5-5 22:27 编辑
回复 2# 77七
回复 3# Five66
回复 4# aloha20200628
如果前面文件名都相同,运行如上图,只有1个可以重命名,其他的没成功重命名
[LoliHouse] Himesama Goumon no Jikan desu - 12 [WebRip 1080p HEVC-10bit AAC SRTx2]_track1_[chi].srt
[LoliHouse] Himesama Goumon no Jikan desu - 12 [WebRip 1080p HEVC-10bit AAC SRTx2]_track4_[chi].srt
[LoliHouse] Himesama Goumon no Jikan desu - 12 [WebRip 1080p HEVC-10bit AAC SRTx2]_track11_[chi].srt
只有
[LoliHouse] Himesama Goumon no Jikan desu - 12 [WebRip 1080p HEVC-10bit AAC SRTx2]_track11_[chi].srt
重命名成
[LoliHouse] Himesama Goumon no Jikan desu - 12 [WebRip 1080p HEVC-10bit AAC SRTx2].srt
作者: 77七 时间: 2024-5-5 22:43
回复 5# 1139054012
重名了,这是正常的。
作者: Five66 时间: 2024-5-5 23:03
回复 5# 1139054012
因为去掉删除之后 , 名字会重复 , 正常现象
作者: aloha20200628 时间: 2024-5-6 11:06
回复 5# 1139054012
楼主须给出重名后的命名规则,如文件名后缀序号... 但如此又被打回原形,说明源文件命名规则的必要性
作者: Batcher 时间: 2024-5-6 12:22
回复 5# 1139054012
如果前面文件名都相同,你需要怎么重命名呢?不可能3个文件都叫做:
[LoliHouse] Himesama Goumon no Jikan desu - 12 [WebRip 1080p HEVC-10bit AAC SRTx2].srt
作者: 1139054012 时间: 2024-5-6 13:44
本帖最后由 1139054012 于 2024-5-6 17:42 编辑
回复 6# 77七
回复 7# Five66
回复 8# aloha20200628
回复 9# Batcher
不好意思,糊涂了
可以新建文件夹移动后重命名吗
比如有
这是文件1_track1_[chi].srt
这是文件1_track4_[chi].srt
这是文件1_track11_[chi].srt
以上三个文件,希望按数字顺序
新建「简体」文件夹,移动第1个最小数字的
这是文件1_track1_[chi].srt
重命名
这是文件1.srt
新建「繁体」文件夹,移动第2最小数字的
这是文件1_track4_[chi].srt
重命名
这是文件1.srt
其次的直接按数字文件夹重命名就好
这是文件1_track11_[chi].srt
新建11文件夹,移动并重命名
这是文件1.srt
作者: qixiaobin0715 时间: 2024-5-6 14:14
楼主说的还是不够清楚。
是每次处理的均是3个srt文件?
作者: 77七 时间: 2024-5-6 15:39
回复 10# 1139054012
- @echo off
- rem 批处理保存为ansi编码格式
- cd /d "%~dp0"
- for /f "delims=" %%i in ('dir /b /a-d "*_track*_[chi].srt"') do (
- set "str=%%i"
- setlocal enabledelayedexpansion
- set "str=!str:_[chi]=|!"
- for /f "tokens=1-2 delims=|" %%a in ("!str:_track=|!") do (
- endlocal
- set /a n=%%b+1000000
- call set "#%%n%%=%%i|%%a%%~xi|%%b"
- )
- )
- for /f "tokens=1-3 delims=|" %%a in ('set #') do (
- call :1
- )
- pause & exit
-
- :1
- for %%x in (简体 繁体 其它) do (
- if not defined _%%x (
- if "%%x" neq "其它" (
- set _%%x=1
- set f=%%x
- ) else (
- set f=%%c
- )
- call md "%%f%%"
- for /f "tokens=1* delims=#=" %%i in ("%%a") do (
- call move "%%j" "%%f%%\%%b"
- )
- exit /b
- )
- )
复制代码
作者: 1139054012 时间: 2024-5-6 17:36
回复 12# 77七
谢谢,这个实现了单个文件后缀数字不同,新建文件夹后缀数字并重命名,请问如果是多个不同文件如何批量移动和重命名呢?
如果前缀文件只有一个的话
这是文件1_track1_[chi].srt
这是文件1_track7_[chi].srt
这是文件1_track11_[chi].srt
会分别新建1,7,11文件夹并删除_trackx_[chi]后缀移动
但如果目录下有多个文件
这是文件1_track1_[chi].srt
这是文件1_track7_[chi].srt
这是文件1_track11_[chi].srt
这是文件2_track1_[chi].srt
这是文件2_track7_[chi].srt
这是文件2_track11_[chi].srt
这是文件3_track1_[chi].srt
这是文件3_track7_[chi].srt
这是文件3_track11_[chi].srt
....
就只有
这是文件1_track1_[chi].srt
这是文件1_track7_[chi].srt
这是文件1_track11_[chi].srt
的三个后缀不同的文件会移动到对应文件夹,其他的没有移动和重命名
这是文件2_track1_[chi].srt
这是文件2_track7_[chi].srt
这是文件2_track11_[chi].srt
这是文件3_track1_[chi].srt
这是文件3_track7_[chi].srt
这是文件3_track11_[chi].srt
请问怎样改,无论目录有多少个前缀不同的文件,都只根据后缀来批量重命名和移动到对应数字文件夹?
作者: 1139054012 时间: 2024-5-6 17:39
回复 11# qixiaobin0715
多个文件,这里只举例了3个
目录下有多个文件
这是文件1_track1_[chi].srt
这是文件1_track7_[chi].srt
这是文件1_track11_[chi].srt
这是文件2_track1_[chi].srt
这是文件2_track7_[chi].srt
这是文件2_track11_[chi].srt
这是文件3_track1_[chi].srt
这是文件3_track7_[chi].srt
这是文件3_track11_[chi].srt
....
作者: 77七 时间: 2024-5-6 18:17
回复 13# 1139054012
修改12楼代码- 第3-4行之间增加两行
-
- :loop
- setlocal
-
- 第16-17行之间增加3行
-
- endlocal
- if exist "*_track*_[chi].srt" (
- goto :loop
- )
复制代码
作者: qixiaobin0715 时间: 2024-5-7 14:25
- @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=1,2 delims=_" %%i in ('dir /b /a-d "*_track??_[chi].srt"') do (
- set a=%%j
- set a=!a:track=!
- if not exist !a! md !a!
- move "%%i_%%j_[chi].srt" "!a!\%%i.srt"
- )
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |