中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-14 20:56
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]批量修改文件名前缀的批处理
楼 主 [已结]批量修改文件名前缀的批处理 发表于 2006-03-29 14:15 ·  中国 江苏 南京 电信
新手上路
积分 8
发帖 2
注册 2006-03-29 14:06
UID 52989
性别 男
状态 离线
我想把一个目录下的以AB开头的文件名改为ABC开头,
用ren AB*.* ABC*.*
发现改后的文件名少了个字符,如原来的AB123.TXT 变成了ABC23.TXT,后面的1没有了,请问如何解决?


───────────────── 版务记录 ─────────────────
执行:Will Sort
操作:修改标题 - 19796 - 请教重命名问题
说明:原主题作者在通知发出三日后仍未申诉或修改,由版主修改并进行处罚
提示:请访问 {7326}论坛新手必读,所有人的基本行为准则
───────────────── 版务记录 ─────────────────


[ Last edited by willsort on 2006-3-30 at 15:42 ]
2 发表于 2006-03-29 18:00 ·  中国 广东 广州 中移铁通
中级用户
★★
积分 256
发帖 93
注册 2006-03-26 22:12
UID 52853
性别 男
来自 广东
状态 离线

@echo off
setlocal enabledelayedexpansion
for %%i in (AB*.*) do (
set name=%%i
set n1=!name:~0,2!
set n2=!name:~2!
ren %%i !n1!C!n2!
)
3 发表于 2006-03-29 18:28 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
UID 50550
状态 离线
setlocal enabledelayedexpansion
for %%i in (*.txt) do set cxs=%%i && ren !cxs! !cxs:b=bc!
ren *.bcat *.bat
endlocal
4 发表于 2006-03-30 09:55 ·  中国 山西 太原 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
UID 19
性别 男
状态 离线
Re 3742668:

你的程序存在着一个小漏洞,当主文件名中含有不位于首部的字母B时,将会导致多余的替换操作。

Re doscc:

程序中保存变量n1,n2是没有必要的,可依照 3742668 兄的思路进行修改。


@echo off
setlocal enabledelayedexpansion
for %%i in (AB*.*) do set name=%%i&&ren %%i ABC!name:~2!
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
5 发表于 2006-03-30 10:01 ·  中国 江苏 南京 电信
新手上路
积分 8
发帖 2
注册 2006-03-29 14:06
UID 52989
性别 男
状态 离线
搞定了!
感谢大家,让我又学到了一招!:)
6 发表于 2006-03-30 15:15 ·  中国 广东 广州 中移铁通
中级用户
★★
积分 256
发帖 93
注册 2006-03-26 22:12
UID 52853
性别 男
来自 广东
状态 离线
Originally posted by willsort at 2006-3-30 09:55:
Re 3742668:

你的程序存在着一个小漏洞,当主文件名中含有不位于首部的字母B时,将会导致多余的替换操作。

Re doscc:

程序中保存变量n1@...



谢谢 版主提示!
我也主意到了
7 再请教 发表于 2006-12-08 16:13 ·  中国 陕西 西安 电信
新手上路
积分 3
发帖 1
注册 2006-12-08 14:12
UID 72935
性别 男
状态 离线
我用上述代码作类似的--更改文件名问题
结果发现一次最多只能改25个文件,再多就会进入死循环,就是
ABCCCCCC…….txt

请教是什么原因?
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
+1 2006-12-23 03:06
8 发表于 2006-12-08 23:56 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线

  试试下面这个,经过测试,我这里是可行的。

@echo off&setlocal enabledelayedexpansion
for /r . %%i in (ab*.txt) do (
set filename=%%~ni
ren "%%i" abc!filename:~3!.txt
)
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
ccwan +4 2006-12-09 00:11
+1 2006-12-23 03:07
9 发表于 2006-12-09 00:44 ·  中国 上海 普陀区 电信
初级用户
★★
积分 153
发帖 68
注册 2006-10-12 22:25
UID 65507
来自 上海
状态 离线
记下了,以后或许有用
个人主页-找餐厅:http://www.canting.cc
论坛跳转: