中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 这种改名要求能否实现:根据父文件夹重命名文件
作者:
标题: 这种改名要求能否实现:根据父文件夹重命名文件 上一主题 | 下一主题
666cool
初级用户





积分 65
发帖 27
注册 2008-8-28
状态 离线
『楼 主』:  这种改名要求能否实现:根据父文件夹重命名文件


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

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

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


[ Last edited by HAT on 2008-10-7 at 01:49 ]

   此帖被 -2 点积分    点击查看详情   
评分人:【 HAT 分数: -2  时间:2008-10-7 01:49


2008-10-6 15:33
查看资料  发送邮件  发短消息 网志   编辑帖子
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 2 楼』:  


@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"
     )
)


2008-10-6 16:16
查看资料  发短消息 网志   编辑帖子
516526966
初级用户




积分 63
发帖 37
注册 2008-8-9
状态 离线
『第 3 楼』:  

高手就是不一样啊。



矛盾的世界同样精彩<点击查看>
2008-10-6 16:34
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (286569692)  编辑帖子
666cool
初级用户





积分 65
发帖 27
注册 2008-8-28
状态 离线
『第 4 楼』:  回2楼

先赞一个啊

如果是不仅要把里面的文件以文件夹的名字做开头,而且还能自动排序呢?
比如数学资料文件夹里所有文件以数学资料开头  并且
为 数学资料1 ,数学资料2 ,数学资料3  依次类推 把原有的文件名称都这样替换掉,命令如何写?

2008-10-6 22:51
查看资料  发送邮件  发短消息 网志   编辑帖子
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 5 楼』:  



  Quote:
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
)


2008-10-7 10:37
查看资料  发送邮件  发短消息 网志   编辑帖子
xinhepc
初级用户




积分 90
发帖 40
注册 2007-4-8
来自 广州
状态 离线
『第 6 楼』:  

写得好呀,高手就是不一样.呵呵



世界第一高在这里
2008-10-7 13:16
查看资料  发送邮件  发短消息 网志  OICQ (573029994)  编辑帖子
666cool
初级用户





积分 65
发帖 27
注册 2008-8-28
状态 离线
『第 7 楼』:  遵循HAT大人的意见,我下次写标题一定注意 -_-!

我知错 O(∩_∩)O~

2008-10-7 15:53
查看资料  发送邮件  发短消息 网志   编辑帖子
666cool
初级用户





积分 65
发帖 27
注册 2008-8-28
状态 离线
『第 8 楼』:  回五楼

用你贴出的语句执行后,文件名替换OK, 但是都没了扩展名,导致图片无法打开,这个,是? 什么原因?

2008-10-8 00:02
查看资料  发送邮件  发短消息 网志   编辑帖子
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 9 楼』:  Re 8楼

ren "%folder%\%%a\%%b" "%%a!index!"
改名的代码就一句而已,自己先尝试一下修改!index!的位置吧。



2008-10-8 01:05
查看资料  发短消息 网志   编辑帖子
666cool
初级用户





积分 65
发帖 27
注册 2008-8-28
状态 离线
『第 10 楼』:  re 9楼

HAT大人,刚才我想了想,发觉应该是这里出的问题 dir /b
dir命令列出的文件是加了后缀名的,而这样就导致改名的时候把后缀也当成文件名抹去了,dos命令里有能列出文件名但是不显示后缀名的命令吗?

2008-10-8 04:26
查看资料  发送邮件  发短消息 网志   编辑帖子
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 11 楼』:  Re 10楼


@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
)




2008-10-8 04:51
查看资料  发短消息 网志   编辑帖子
pkto
初级用户





积分 62
发帖 62
注册 2007-7-14
状态 离线
『第 12 楼』:  

HAT就是强大啊!许久了回来看看这段代码,仍然是如此的经典,基本功扎实得都板板的了!

2009-5-23 05:12
查看资料  发短消息 网志   编辑帖子
su2353
初级用户





积分 152
发帖 63
注册 2005-8-18
状态 离线
『第 13 楼』:  

如果文件夹不只(英语资料 数学资料 语文资料)这4个,而是任意多个文件夹,这时应该怎么办?

2010-4-15 20:12
查看资料  发送邮件  发短消息 网志   编辑帖子

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: