![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 08:35 |
共 48,040 主题排行 / 350,125 发帖 / 今日 0 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [求助]取后一个分区盘符的问题 |
| 可打印版本 947 / 14 |
| 第1楼 gmy | 发表于 2008-01-24 11:19 |
| 版主 发帖 392 积分 1,113 | |
|
[求助]取后一个分区盘符的问题 一个程序产生的关于盘符的报告a.txt
0:1 C: YYYY... 0:2 D: YYYY... 0:3 E: YYYY... 0:4 F: YYYY... 空行 空行 此文件的特点是,行数不确定,根据分区的具体情况而定,如5个分区,则是: 0:1 C: YYYY... 0:2 D: YYYY... 0:3 E: YYYY... 0:4 F: YYYY... 0:5 G: YYYY... 空行 空行 仅想得到红色的部分。即:倒数第3行的第6列字符(注意:倒数第3行和第6列这个位置是固定不变的,YYYY...的内容和字符数量都不确定),结果请赋予变量%drv%。 要求: 1、最好用FOR命令和NT自带命令,尽量不要用第三方工具 2、命令行控制在一行,尽量不要多行。 3、就题论题,不要跑题。 [ Last edited by gmy on 2008-1-24 at 12:16 PM ] |
|
| 第2楼 yovie | 发表于 2008-01-24 11:25 |
| 初级用户 发帖 42 积分 92 来自 重庆市巫山县 | |
|
@for /f "tokens=2 delims=: " %i in (a.txt) do @set drv=%i
|
|
| 第3楼 fastslz | 发表于 2008-01-24 11:57 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
葛站长用什么minitow还是DSPTW
|
|
| 第4楼 gmy | 发表于 2008-01-24 12:00 |
| 版主 发帖 392 积分 1,113 | |
|
2楼的 tokens=2 我改成 3 就成功了,谢谢!
@for /f "tokens=3 delims=: " %i in (a.txt) do @set drv=%i 如果带: ,如 F: 或 G: 就用以下 @for /f "tokens=2" %i in (a.txt) do @set drv=%i [ Last edited by gmy on 2008-1-24 at 12:57 PM ] |
|
| 第5楼 gmy | 发表于 2008-01-24 12:01 |
| 版主 发帖 392 积分 1,113 | |
|
fastslz 真聪明,一眼被你看穿,我用的是dsptw。
[ Last edited by gmy on 2008-1-24 at 12:02 PM ] |
|
| 第6楼 fastslz | 发表于 2008-01-24 12:05 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
有个方法更好,不一定指定到最后一个分区,若有FAT32就放在FAT32上面
|
|
| 第7楼 yovie | 发表于 2008-01-24 12:10 |
| 初级用户 发帖 42 积分 92 来自 重庆市巫山县 | |
|
不好意思,看丢了前面的数字
|
|
| 第8楼 gmy | 发表于 2008-01-24 12:11 |
| 版主 发帖 392 积分 1,113 | |
|
6楼,我觉得,很少有人将最后分区设置成NTFS,而倒数第二个分区为FAT,注:这里不能考虑隐藏分区的情况。
一般人全部都是NTFS或FAT,或者最后一个是FAT。 |
|
| 第9楼 fastslz | 发表于 2008-01-24 12:21 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
我自己现在用的代码是这样的先遍历出所有FAT,再分析各FAT的可用空间,取一个可用空间最大的。如果没有FAT遍历ntfs可用空间最大的。
fat的话纯DOS下没问题 ntfs的话生成一个带盘号和分区号的文本在*.gho目录里,纯DOS下调用 |
|
| 第10楼 knoppix7 | 发表于 2008-01-24 12:25 |
| 银牌会员 发帖 634 积分 1,287 来自 cmd.exe | |
|
建议LZ多换几种情况测试一下.
|
|
| 第11楼 fastslz | 发表于 2008-01-24 12:37 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
现在深度小兵那个是用autoit脚本做的,我不喜欢那东西,下载试了一下那家伙还占用grldr并且卸载时居然不管青红皂白把C:\boot文件夹全删除了,整一个垃圾作品。我在那贴上就对他提了意见,还被他们的粉丝团...(也可能是他自己的马甲)
|
|
| 第12楼 everest79 | 发表于 2008-01-24 13:02 |
| 金牌会员 发帖 1,127 积分 2,564 | |
|
sort /r a.txt>b.txt&&set /p a=<b.txt&&call set a=%%a:~5,1%%
|
|
| 第13楼 gmy | 发表于 2008-01-24 17:46 |
| 版主 发帖 392 积分 1,113 | |
|
还有一个问题:
@for /f "tokens=3 delims=: " %i in (a.txt) do @set drv=%i echo %drv%>>2.txt 如何将以上两行合并成一行?我用过&&: @for /f "tokens=3 delims=: " %i in (a.txt) do @set drv=%i && echo %drv%>>2.txt 以上方法不行,会产生多个F或G,我只要一个。 [ Last edited by gmy on 2008-1-24 at 05:48 PM ] |
|
| 第14楼 fastslz | 发表于 2008-01-24 18:39 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
直接这样行不
@echo off for /f "skip=2 tokens=1,2" %%i in ('dsptw 0 /find:all /y') do set p2p=%%i&set drv=%%j set drv set p2p pause |
|
| 第15楼 terse | 发表于 2008-01-24 20:28 |
| 银牌会员 发帖 946 积分 2,404 | |
|
命令行
@for /f "tokens=3 delims=: " %i in (01.txt) do echo %i>2.txt P: @for /f "tokens=2" %%i in ('dsptw 0 /Find:all /Y') do echo %%i>2.txt [ Last edited by terse on 2008-1-24 at 08:54 PM ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |