[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

原始文件名如下:
报告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 11:59 编辑
  1. for /f "tokens=1* delims=)" %%i in ('dir /b /a-d *.rar') do ren "%%i)%%j" "%%i).rar"
复制代码

TOP

回复 2# qixiaobin0715


    你好,我试了,把这个代码做成.bat文件,放在该目录里,点击bat文件没反应啊。

TOP

忘了各引号,已修改。
请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ

TOP

回复 4# qixiaobin0715


    非常感谢,试了,没问题。

就是我忘记说一点了。有的文件名有多个括号,比如说:

报告2021(上册)(PDF扫描版)153690.rar
要改为:
报告2021(上册)(PDF扫描版).rar

也就是说,希望把最后一个右括号)之后的字符(全都是数字)删除,但不删除括号符号,只删除后面的数字。
谢谢!

TOP

本帖最后由 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
复制代码

TOP

qixiaobin0715 发表于 2021-12-23 20:42



    你好,执行这个代码,显示:存在一个重名文件,或是找不到文件。

TOP

回复 7# nightbaby
代码已修改,确实存在问题。可以再试试

TOP

回复 8# qixiaobin0715


    辛苦了。
这次提示“找不到文件”。。。

TOP

回复 9# nightbaby
现在应当可以了
1

评分人数

TOP

回复 10# qixiaobin0715


    完美!!!多谢了!!!

TOP

返回列表