Board logo

标题: [文件操作] 批处理如何批量删除文件名某个字符后面的所有字符,不删后缀名? [打印本页]

作者: 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 编辑
  1. 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 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /a-d *.rar') do (
  4.     set str1=%%~ni
  5.     set str1=!str1:)=) !
  6.     for %%j in (!str1!) do (
  7.         set str2=%%j
  8.         if "!str2:~-1!"==")" set str=!str!%%j
  9.     )
  10.     ren "%%i" "!str!%%~xi"
  11.     set str=
  12. )
  13. 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