标题: [文件操作] [已解决]请问批处理如何批量修改文件名为指定要求 [打印本页]
作者: mgg9373 时间: 2021-3-19 12:00 标题: [已解决]请问批处理如何批量修改文件名为指定要求
本帖最后由 mgg9373 于 2021-3-19 20:32 编辑
各位大佬好,本人初学批处理,现在遇到一个问题,恳请各位指导,十分感谢!
目前的文件夹中有一系列格式为.fft的文件,文件名的样式主要有两类(主要是最后一部分有两位数表示也有1位数表示),分别为:
20190216-045440-B-P-l-CRH380B-3664-00-1.fft
20190216-045440-B-P-l-CRH380B-3664-00-01.fft
用-作为划分符号
第一部分:日期,2019年2月16日,希望只保留201902(即年月),放置到新文件名第二部分
第二部分:不需要
第三部分:表示状态(有B和A两种,希望保留,并放到新文件名第一部分)
第四部分:不需要
第五部分:表示状态(有l和r两种,希望保留,并放到新文件名第一部分,和原第三部分合并)
-第六部分:不需要
第七部分:编号,需要,放置到新文件名第三部分
第八部分-第九部分:希望保留,放置到新文件名的第四、五部分
一些实例:
20190216-045440-B-P-l-CRH380B-3664-00-1.fft
希望更改文件名为:BL-201902-3664-00-01
20190805-031904-B-P-r-CRH380B-3608-00-01
希望更改文件名为:BR-201908-3608-00-01
20200525-052922-A-P-l-CRH380B-3662-07-03
希望更改文件名为:AL-202005-3662-07-03
再次感谢!
作者: qixiaobin0715 时间: 2021-3-19 13:19
本帖最后由 qixiaobin0715 于 2021-3-19 13:41 编辑
未测试,请自测。- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /a-d *.fft') do (
- for /f "tokens=1,3,5,7-9 delims=-." %%a in ("%%i") do (
- set "str1=%%a"
- set "str2=0%%f"
- ren "%%i" "%%b%%c-!str1:~0,-2!-%%d-%%e-!str2:~-2!%%~xi"
- )
- )
- pause
复制代码
作者: mgg9373 时间: 2021-3-19 13:36
谢谢您!我直接运行了一下,好像会闪退,我琢磨一下这个代码,试试在这个基础上修改一下,谢谢
作者: qixiaobin0715 时间: 2021-3-19 13:41
回复 3# mgg9373
已修改
作者: mgg9373 时间: 2021-3-19 13:59
谢谢大神!太牛了
作者: mgg9373 时间: 2021-3-19 14:17
回复 4# qixiaobin0715
您好,运行时又发现了一个问题,有重复文件,比如
20190409-095947-B-P-l-CRH380B-3665-06-3
20190409-101402-B-P-l-CRH380B-3665-06-3
这两个文件的项都相同,只有第二部分不同,能否只将第二部分最大的文件改名,剩下的不做改动呢?谢谢!
比如这两个文件只保留后者,因为101402>095947
后者的文件名改为BL-201904-3665-06-03
作者: qixiaobin0715 时间: 2021-3-19 15:51
回复 6# mgg9373
自己试试- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /a-d *.fft^|sort /r') do (
- for /f "tokens=1,3,5,7-9 delims=-." %%a in ("%%i") do (
- set "str1=%%a"
- set "str2=0%%f"
- set "newname=%%b%%c-!str1:~0,-2!-%%d-%%e-!str2:~-2!%%~xi"
- if not exist !newname! ren "%%i" "!newname!"
- )
- )
- pause
复制代码
作者: mgg9373 时间: 2021-3-19 20:32
回复 7# qixiaobin0715
谢谢大神,学到了!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |