中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-12 10:46
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 这种改名要求能否实现:根据父文件夹重命名文件 查看 1,706 回复 12
楼 主 这种改名要求能否实现:根据父文件夹重命名文件 发表于 2008-10-06 15:33 ·  中国 浙江 杭州 电信
初级用户
积分 65
发帖 27
注册 2008-08-28 21:14
17年会员
UID 124424
性别 男
状态 离线

比如我有一个文件夹名字为 资料,
里面又有其他的文件夹,比如说有 英语资料,数学资料,语文资料 三个文件夹;
而每个文件夹里又有很多文档、图片之类的文件。

能否实现批量 英语资料文件夹里所有文件名以英语资料开头, 语文资料文件夹里所有文件名以语文资料开头,数学资料文件夹里所有文件以数学资料开头 。

───────────────── 版务记录 ─────────────────
执行:HAT
操作:2008-10-07在帖子标题中增加搜索关键字
说明:原标题"如果是这种批处理改名要求批处理能否实现"不利于论坛搜索
处罚:扣除2点积分
提示:建议阅读以下帖子
{1415}提问的智慧
{7326}论坛新手必读,所有人的基本行为准则
{22703}请不要做浮躁的人
{32667}那些连标题都写不清楚的人们啊,你们醒醒吧
{32825}本版严厉整顿烂帖
───────────────── 版务记录 ─────────────────


[ Last edited by HAT on 2008-10-7 at 01:49 ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
HAT -2 2008-10-07 01:49
2 发表于 2008-10-06 16:16 ·  中国 江西 赣州 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
@echo off
set folder=G:\test\资料
for %%a in (英语资料 数学资料 语文资料) do (
for /f "delims=" %%b in ('dir /b "%folder%\%%a"') do (
ren "%folder%\%%a\%%b" "%%a%%b"
)
)
3 发表于 2008-10-06 16:34 ·  中国 山东 淄博 联通
初级用户
积分 63
发帖 37
注册 2008-08-09 11:46
18年会员
UID 123026
性别 男
状态 离线
高手就是不一样啊。
4 回2楼 发表于 2008-10-06 22:51 ·  中国 浙江 杭州 西湖区 电信
初级用户
积分 65
发帖 27
注册 2008-08-28 21:14
17年会员
UID 124424
性别 男
状态 离线
先赞一个啊

如果是不仅要把里面的文件以文件夹的名字做开头,而且还能自动排序呢?
比如数学资料文件夹里所有文件以数学资料开头 并且
为 数学资料1 ,数学资料2 ,数学资料3 依次类推 把原有的文件名称都这样替换掉,命令如何写?
5 发表于 2008-10-07 10:37 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
Originally posted by 666cool at 2008-10-6 22:51:
先赞一个啊

如果是不仅要把里面的文件以文件夹的名字做开头,而且还能自动排序呢?
比如数学资料文件夹里所有文件以数学资料开头 并且
为 ...

添加一个计数器变量即可实现,演示代码如下,未测试,有问题欢迎跟帖讨论。
@echo off & SetLocal EnableDelayedExpansion
set folder=G:\test\资料

:: 添加index变量为计数器用
set index=1

for %%a in (英语资料 数学资料 语文资料) do (
for /f "delims=" %%b in ('dir /b "%folder%\%%a"') do (
ren "%folder%\%%a\%%b" "%%a!index!"
set /a index+=1
)
rem 还原index的值:
set index=1
)
6 发表于 2008-10-07 13:16 ·  中国 广东 广州 电信
初级用户
积分 90
发帖 40
注册 2007-04-08 04:50
19年会员
UID 84350
性别 男
来自 广州
状态 离线
写得好呀,高手就是不一样.呵呵
7 遵循HAT大人的意见,我下次写标题一定注意 -_-! 发表于 2008-10-07 15:53 ·  中国 浙江 杭州 电信
初级用户
积分 65
发帖 27
注册 2008-08-28 21:14
17年会员
UID 124424
性别 男
状态 离线
我知错 O(∩_∩)O~
8 回五楼 发表于 2008-10-08 00:02 ·  中国 浙江 杭州 电信
初级用户
积分 65
发帖 27
注册 2008-08-28 21:14
17年会员
UID 124424
性别 男
状态 离线
用你贴出的语句执行后,文件名替换OK, 但是都没了扩展名,导致图片无法打开,这个,是? 什么原因?
9 Re 8楼 发表于 2008-10-08 01:05 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
ren "%folder%\%%a\%%b" "%%a!index!"
改名的代码就一句而已,自己先尝试一下修改!index!的位置吧。
10 re 9楼 发表于 2008-10-08 04:26 ·  中国 浙江 杭州 电信
初级用户
积分 65
发帖 27
注册 2008-08-28 21:14
17年会员
UID 124424
性别 男
状态 离线
HAT大人,刚才我想了想,发觉应该是这里出的问题 dir /b
dir命令列出的文件是加了后缀名的,而这样就导致改名的时候把后缀也当成文件名抹去了,dos命令里有能列出文件名但是不显示后缀名的命令吗?
11 Re 10楼 发表于 2008-10-08 04:51 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
@echo off & SetLocal EnableDelayedExpansion
set folder=G:\test\资料

:: 添加index变量为计数器用
set index=1

for %%a in (英语资料 数学资料 语文资料) do (
for /f "delims=" %%b in ('dir /b "%folder%\%%a"') do (
ren "%folder%\%%a\%%b" "%%a!index!%%b"
set /a index+=1
)
rem 还原index的值:
set index=1
)
12 发表于 2009-05-23 05:12 ·  中国 江苏 南京 电信
初级用户
★★
积分 62
发帖 62
注册 2007-07-14 14:39
19年会员
UID 93962
性别 男
状态 离线
HAT就是强大啊!许久了回来看看这段代码,仍然是如此的经典,基本功扎实得都板板的了!
13 发表于 2010-04-15 20:12 ·  中国 福建 泉州 电信
初级用户
★★
积分 152
发帖 63
注册 2005-08-18 22:46
20年会员
UID 41772
状态 离线
如果文件夹不只(英语资料 数学资料 语文资料)这4个,而是任意多个文件夹,这时应该怎么办?
论坛跳转: