中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]如何根据文件夹内文本内容修改文件夹名称?
作者:
标题: [求助]如何根据文件夹内文本内容修改文件夹名称? 上一主题 | 下一主题
hhxx
新手上路





积分 4
发帖 4
注册 2009-8-19
状态 离线
『楼 主』:  [求助]如何根据文件夹内文本内容修改文件夹名称?

各位兄台,题目内容如下:

文件夹内有如下一些文件夹
应用传热_10057703\
传热学_10057799\
高等学校_10057810\
传热学_10988504\
高等学校_11003496\
工程热力_11014105\
传热学_11811051\
传热学与_11889166\
传热学_11897610\
传热学考_11971476\
每个文件夹内都有一个bookinfo.dat文件,里面内容格式如下:
[General Information]
书名=应用传热学——高等学校教材
作者=[美]V·加纳佩西
页数=452
SS号=10057703
出版日期=1987年02月第1版
批处理文件的目的很简单,将文件夹名称改为bookinfo.dat内的书名,格式为:书名_ss号。

上面罗哩罗嗦的题目描述不知道众位能不能看明白。

我的思路是
1,尝试用dir /AD得到文件夹名称
2,用for将文件夹名分离成两部分,书名(不全的)和ss号码
3,考虑将完整的书名从bookinfo.dat提出来,用for /f可以把书名付给变量。
4,将上述两部分合并成一个批处理。

不知道上述的思路是否正确,尝试了一下午也没搞定,现在有些头脑混乱了。

妄求各位前辈帮忙

[ Last edited by hhxx on 2009-8-21 at 11:47 ]

2009-8-21 11:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Fair
新手上路




积分 9
发帖 9
注册 2009-8-20
状态 离线
『第 2 楼』:  

可以用dir完全遍历dat文件
然后用place=%~fa:%~nxa=% 得到文件夹的名字 然后改名

2009-8-21 12:45
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (276790434)  编辑帖子  回复  引用回复
hhxx
新手上路





积分 4
发帖 4
注册 2009-8-19
状态 离线
『第 3 楼』:  

各位大侠能帮忙写一个吗, 越来越糊涂了.

2009-8-24 12:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yishanju
银牌会员

[b]看你妹啊[/b]


积分 1488
发帖 1357
注册 2006-5-20
状态 离线
『第 4 楼』:  

打包几个文件夹传上来看看




有问题请发论坛或者自行搜索,再短消息问我的统统是SB
2009-8-24 19:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hhxx
新手上路





积分 4
发帖 4
注册 2009-8-19
状态 离线
『第 5 楼』:  

http://upload.cn-dos.net/img/1666.rar

哦,忘记了. 感谢yishanju兄

2009-8-24 20:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





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


@echo off
setlocal enabledelayedexpansion
cd /d "g:\我的文档\桌面\1666\05 历史唯物主义(唯物史观)"
for /f "delims=" %%a in ('dir /a:d /b') do (
    for /f "usebackq tokens=1,* delims==" %%i in ("%%a\bookinfo.dat") do set %%i=%%j
    ren "%%a" "!书名!_!SS号!"
)
[ Last edited by tireless on 2009-8-25 at 13:50 ]

   此帖被 +2 点积分    点击查看详情   
评分人:【 keen 分数: +2  时间:2009-8-25 02:19


2009-8-25 00:50
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hhxx
新手上路





积分 4
发帖 4
注册 2009-8-19
状态 离线
『第 7 楼』:  

赞, 太强大了.

遇到个小问题, 因为delims==的原因, 当书名里包含等号(=)时, 上面的bat就不能把书名都改过来了.

[ Last edited by hhxx on 2009-8-25 at 07:46 ]

2009-8-25 07:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





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

已修改 6 楼代码。

如果等号可能在书名开头,用以下代码:
@echo off
setlocal enabledelayedexpansion
cd /d "g:\我的文档\桌面\1666\05 历史唯物主义(唯物史观)"
for /f "delims=" %%a in ('dir /a:d /b') do (
    for /f "usebackq skip=1 eol=出 delims=名号 tokens=1*" %%i in ("%%a\bookinfo.dat") do (
        set %%i=%%j
    )
    ren "%%a" "!书:~1!_!SS:~1!"
)


2009-8-25 13:59
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: