找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 3363|回复: 5

[文本处理] 求助批处理如何批量删除文件名中的 -副本 ()这些?

[复制链接]
发表于 2025-8-12 14:03:16 | 显示全部楼层 |阅读模式
每次复制文件文件名后面就会出现 -副本 (2)这些
比如
123.xlsx
复制后变成了
123 - 副本.xlsx
123 - 副本 .(2).xlsx
123 - 副本 .(3).xlsx
我想批量改成
1232.xlsx
1233.xlsx这样
发表于 2025-8-12 15:52:36 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-8-12 20:18 编辑

回复 1# ypzdy

以下代码运行后会将当前目录下所有 * - 副本*.* 文件更名为与主名对应的 *1.*,*2.*, ..., *n.*

  1. @echo off &setlocal enabledelayedexpansion
  2. for /f "delims=" %%F in ('dir /b/a-d^|find /v " - 副本" ') do set "n=" &for /f "delims=" %%a in ('dir /b/a-d "%%~nF - 副本*" 2^>nul') do (
  3.    set "a=%%~na" &set/a "n+=1"
  4.    for /f "delims=" %%x in ("!a: - 副本=\!") do ren "%%a" "%%x!n!%%~xa" )
  5. pause&exit/b
复制代码
 楼主| 发表于 2025-8-12 16:12:25 | 显示全部楼层
回复 2# aloha20200628


    谢谢大神
发表于 2025-8-12 20:33:26 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-8-12 21:05 编辑

回复 3# ypzdy

二楼代码开启了延迟变量,故被处理的文件名中若包含 ! 字符会出错。
以下给出不用延迟变量的 A,B 两个版本,均可兼容文件名中的 ! 字符,B版利用 dir /b... 默认文件名排序的特性和尽量减少call调用次数,可能会比A版效率高一些,尤其是当文件量较大时...

A版

  1. @echo off &setlocal &for /f "delims=" %%F in ('dir /b/a-d^|find /v " - 副本" ') do set "n=" &for /f "delims=" %%a in ('dir /b/a-d "%%~nF - 副本*" 2^>nul') do (
  2.    set "_a=%%~na" &set/a "n+=1" &call set "_a=%%_a: - 副本=\%%"
  3.    for /f "delims=" %%x in ('echo.%%_a%%') do call ren "%%a" "%%x%%n%%%%~xa" )
  4. pause&exit/b
复制代码
B版

  1. @echo off &setlocal &for /f "delims=" %%a in ('dir /b/a-d "* - 副本*" 2^>nul') do (
  2.    set "_a=%%~na" &call set "_a=%%_a: - 副本=\%%"
  3.    for /f "delims=" %%x in ('echo.%%_a%%') do (
  4.       if not defined %%x (set "n=1" &set "%%x=1") else set/a "n+=1"
  5.       for /f %%n in ('set/a n') do ren "%%a" "%%x%%n%%~xa" ))
  6. pause&exit/b
复制代码
 楼主| 发表于 2025-8-12 22:00:56 | 显示全部楼层
回复 4# aloha20200628


    谢谢大神
发表于 2025-8-13 15:38:58 | 显示全部楼层
本帖最后由 77七 于 2025-8-13 15:42 编辑

如果文件名是数字,还不如保持原样,如1楼修改后的文件名,看起来很乱;但是如果文件名是汉字,还是可以一目了然。
如果重命名后再复制产生一个副本,再执行脚本,还要考虑重名问题。如果删除了原副本(2),还可能需要考虑次序问题。
可以考虑添加一个右键菜单,从复制那一步就解决问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 12:39 , Processed in 0.018508 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表