![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-10 15:18 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,255 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [挑战1] 目录最后一个名称的提取[ 难度:☆] |
| 可打印版本 3,979 / 31 |
| 第1楼 flyinspace | 发表于 2007-04-30 09:42 |
| 银牌会员 发帖 517 积分 1,206 | |
|
[挑战1] 目录最后一个名称的提取[ 难度:☆] 我们这一期的题目 :目录最后一个名称的提取
因为任意目录的名称都不一样。。但都满足于 c:\aaa\bbb\ccc 的格式,那么我们的要求就是 提出 ccc。 这个格式可以通过 dir /b /s /ad 来获取。 可以使用 vbs 来提取 但不得通过第三方工具。。。。。。。。。。。。。。。。。。。。 挑战人的关键字: set /a ,变量延迟 , if not defined 不得使用:for 或 call 时 的特殊参数。。例如 %~nxi 之类的。
[ Last edited by flyinspace on 2007-4-30 at 05:03 PM ] |
|
| 第2楼 youxi01 | 发表于 2007-04-30 09:58 |
| 高级用户 发帖 247 积分 846 来自 湖南==》广东 | |
|
其实这个问题在论坛里也讨论过了。
测试代码如下: |
|
| 第3楼 youxi01 | 发表于 2007-04-30 10:11 |
| 高级用户 发帖 247 积分 846 来自 湖南==》广东 | |
|
当然以上的代码利用了 %%~ni的特殊性。
其实,还有一种思路,就是利用递归方法来获得 文件夹 名,测试代码如下: |
|
| 第4楼 baomaboy | 发表于 2007-04-30 10:13 |
| 银牌会员 发帖 554 积分 1,513 | |
|
哦 原来这样取,刚才我还以为要取得最后的有效路径呢,就是判断磁盘上此路径是否真实存在。
|
|
| 第5楼 youxi01 | 发表于 2007-04-30 10:16 |
| 高级用户 发帖 247 积分 846 来自 湖南==》广东 | |
|
如果要获得 文件夹 的层数的话,可能用第二种方法比较好。
|
|
| 第6楼 flyinspace | 发表于 2007-04-30 13:00 |
| 银牌会员 发帖 517 积分 1,206 | |
|
对三楼的代码的讲解:
下一期难度会提高。。敬请各位高手关注。。 [ Last edited by flyinspace on 2007-4-30 at 12:14 AM ] |
|
| 第7楼 baomaboy | 发表于 2007-04-30 13:07 |
| 银牌会员 发帖 554 积分 1,513 | |
Originally posted by flyinspace at 2007-4-30 13:00: 不一定是目录,那是甚么意思? |
|
| 第8楼 youxi01 | 发表于 2007-04-30 13:15 |
| 高级用户 发帖 247 积分 846 来自 湖南==》广东 | |
|
也不是很明白他的意思,他的意思可能是还有些是文件吧。
或者那个目录有很多层,但是他想提取指定的层? |
|
| 第9楼 flyinspace | 发表于 2007-04-30 13:20 |
| 银牌会员 发帖 517 积分 1,206 | |
|
举个例子:
现在我们有一些东西要出售。。 前面是对这个东西的描叙。而最后一项是这个东西的价格。 前面的描叙项不定,而我们只提取最后一项。 这个是我出题的疏忽。。 下次再出题的时候,我会尽量注意的。。 |
|
| 第10楼 youxi01 | 发表于 2007-04-30 13:24 |
| 高级用户 发帖 247 积分 846 来自 湖南==》广东 | |
Originally posted by flyinspace at 2007-4-30 01:20 PM: 越来越不明白,现在的代码不就是提取最后一项吗? 如果要提取指定层数,也很简单。 在第二种办法的基础上,启用延迟变量,然后加个if 检测 : if !num! gtr ... &... & goto :eof |
|
| 第11楼 flyinspace | 发表于 2007-04-30 13:28 |
| 银牌会员 发帖 517 积分 1,206 | |
|
呵呵,是我表达出了问题:)
不好意思。。 因为第一次组织这样的活动。。难免有考虑不周的地方。。请原谅。。 还有youxi01 你的代码已经写得很好了。。 真不好意思。。 |
|
| 第12楼 youxi01 | 发表于 2007-04-30 13:34 |
| 高级用户 发帖 247 积分 846 来自 湖南==》广东 | |
|
其实,你才最值得奖励。
我们应该为你的 努力 加油!! 说实话,提一些有意义的问题,然后大家讨论解决,确实有助于提高论坛人气,也有助于一些新手快速成长起来!当然我自己也是新手,努力学习中... |
|
| 第13楼 baomaboy | 发表于 2007-04-30 13:40 |
| 银牌会员 发帖 554 积分 1,513 | |
|
唉 第一次经历 难免,
就算路径最后取得的是“我是程序.exe”也不说明它不是文件夹啊,"我是程序.exe"怎么不能做文件夹名吗! 其实从一开始 我都一相情愿的认为 该贴的要求是: 取得(验证)aaa=c:\windows\system32\playuo\cndos\asd adf中的最后有效路径,也就是说验证aaa这个路径中的最后有效路径,如果cndos和asd adf这两个文件夹都不存在的话,最后返回的结果应该是playuo |
|
| 第14楼 flyinspace | 发表于 2007-04-30 13:54 |
| 银牌会员 发帖 517 积分 1,206 | |
Originally posted by baomaboy at 2007-4-30 12:40 AM: 呵呵。你的这个办法很好啊。。 完全可以按照这个来嘛:) 这个完全可以做下一期的挑战题目嘛:) [ Last edited by flyinspace on 2007-4-30 at 12:59 AM ] |
|
| 第15楼 notepad | 发表于 2007-05-01 02:01 |
| 新手上路 发帖 4 积分 10 | |
|
用不了啊 `````
|
|
| 1 2 3 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |