标题: [文件操作] 批处理如何批量删除文件名某个字符后面的所有字符,不删后缀名? [打印本页]
作者: nightbaby 时间: 2021-12-23 01:55 标题: 批处理如何批量删除文件名某个字符后面的所有字符,不删后缀名?
原始文件名如下:
报告2019(PDF扫描版)61521.rar
报告2020(PDF扫描版)35681.rar
报告2021(PDF扫描版)153690.rar
批量改为:
报告2019(PDF扫描版).rar
报告2020(PDF扫描版).rar
报告2021(PDF扫描版).rar
就是把(PDF扫描版)后面的数字删除,但保留后缀名。
需要注意的是,(PDF扫描版)中的括号,是中文括号(),不是英文括号()。
谢谢!
作者: qixiaobin0715 时间: 2021-12-23 06:37
本帖最后由 qixiaobin0715 于 2021-12-23 11:59 编辑
- for /f "tokens=1* delims=)" %%i in ('dir /b /a-d *.rar') do ren "%%i)%%j" "%%i).rar"
复制代码
作者: nightbaby 时间: 2021-12-23 11:59
回复 2# qixiaobin0715
你好,我试了,把这个代码做成.bat文件,放在该目录里,点击bat文件没反应啊。
作者: qixiaobin0715 时间: 2021-12-23 12:03
忘了各引号,已修改。
请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
作者: nightbaby 时间: 2021-12-23 13:19
回复 4# qixiaobin0715
非常感谢,试了,没问题。
就是我忘记说一点了。有的文件名有多个括号,比如说:
报告2021(上册)(PDF扫描版)153690.rar
要改为:
报告2021(上册)(PDF扫描版).rar
也就是说,希望把最后一个右括号)之后的字符(全都是数字)删除,但不删除括号符号,只删除后面的数字。
谢谢!
作者: qixiaobin0715 时间: 2021-12-23 20:42
本帖最后由 qixiaobin0715 于 2021-12-23 22:33 编辑
- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /a-d *.rar') do (
- set str1=%%~ni
- set str1=!str1:)=) !
- for %%j in (!str1!) do (
- set str2=%%j
- if "!str2:~-1!"==")" set str=!str!%%j
- )
- ren "%%i" "!str!%%~xi"
- set str=
- )
- pause
复制代码
作者: nightbaby 时间: 2021-12-23 21:48
qixiaobin0715 发表于 2021-12-23 20:42
你好,执行这个代码,显示:存在一个重名文件,或是找不到文件。
作者: qixiaobin0715 时间: 2021-12-23 22:28
回复 7# nightbaby
代码已修改,确实存在问题。可以再试试
作者: nightbaby 时间: 2021-12-23 22:30
回复 8# qixiaobin0715
辛苦了。
这次提示“找不到文件”。。。
作者: qixiaobin0715 时间: 2021-12-23 22:33
回复 9# nightbaby
现在应当可以了
作者: nightbaby 时间: 2021-12-23 23:01
回复 10# qixiaobin0715
完美!!!多谢了!!!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |