楼 主
[求助]取后一个分区盘符的问题
发表于 2008-01-24 11:19 · 中国 河北 唐山 联通
版主
★★★
操作系统爱好者
积分 1,113
发帖 392
注册 2002-11-11 00:00
23年会员
UID 228
性别 男
状态 离线
一个程序产生的关于盘符的报告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 ]
DOS之家 http://doshome.com 站长 葛明阳
第 2 楼
发表于 2008-01-24 11:25 · 中国 江苏 无锡 电信
初级用户
★
积分 92
发帖 42
注册 2007-08-14 09:14
18年会员
UID 95100
性别 男
来自 重庆市巫山县
状态 离线
@for /f "tokens=2 delims=: " %i in (a.txt) do @set drv=%i
拾人牙慧者!
第 3 楼
发表于 2008-01-24 11:57 · 中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
第 4 楼
发表于 2008-01-24 12:00 · 中国 河北 唐山 联通
版主
★★★
操作系统爱好者
积分 1,113
发帖 392
注册 2002-11-11 00:00
23年会员
UID 228
性别 男
状态 离线
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 ]
DOS之家 http://doshome.com 站长 葛明阳
第 5 楼
发表于 2008-01-24 12:01 · 中国 河北 唐山 联通
版主
★★★
操作系统爱好者
积分 1,113
发帖 392
注册 2002-11-11 00:00
23年会员
UID 228
性别 男
状态 离线
fastslz 真聪明,一眼被你看穿,我用的是dsptw。
[ Last edited by gmy on 2008-1-24 at 12:02 PM ]
DOS之家 http://doshome.com 站长 葛明阳
第 6 楼
发表于 2008-01-24 12:05 · 中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
有个方法更好,不一定指定到最后一个分区,若有FAT32就放在FAT32上面
第 7 楼
发表于 2008-01-24 12:10 · 中国 江苏 无锡 电信
初级用户
★
积分 92
发帖 42
注册 2007-08-14 09:14
18年会员
UID 95100
性别 男
来自 重庆市巫山县
状态 离线
第 8 楼
发表于 2008-01-24 12:11 · 中国 河北 唐山 联通
版主
★★★
操作系统爱好者
积分 1,113
发帖 392
注册 2002-11-11 00:00
23年会员
UID 228
性别 男
状态 离线
6楼,我觉得,很少有人将最后分区设置成NTFS,而倒数第二个分区为FAT,注:这里不能考虑隐藏分区的情况。
一般人全部都是NTFS或FAT,或者最后一个是FAT。
DOS之家 http://doshome.com 站长 葛明阳
第 9 楼
发表于 2008-01-24 12:21 · 中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
我自己现在用的代码是这样的先遍历出所有FAT,再分析各FAT的可用空间,取一个可用空间最大的。如果没有FAT遍历ntfs可用空间最大的。
fat的话纯DOS下没问题
ntfs的话生成一个带盘号和分区号的文本在*.gho目录里,纯DOS下调用
第 10 楼
发表于 2008-01-24 12:25 · 中国 北京 联通
银牌会员
★★★
积分 1,287
发帖 634
注册 2007-05-02 15:06
19年会员
UID 87277
性别 男
来自 cmd.exe
状态 离线
第 11 楼
发表于 2008-01-24 12:37 · 中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
现在深度小兵那个是用autoit脚本做的,我不喜欢那东西,下载试了一下那家伙还占用grldr并且卸载时居然不管青红皂白把C:\boot文件夹全删除了,整一个垃圾作品。我在那贴上就对他提了意见,还被他们的粉丝团...(也可能是他自己的马甲)
第 12 楼
发表于 2008-01-24 13:02 · 中国 广东 广州 番禺区 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
19年会员
UID 74552
性别 男
状态 离线
sort /r a.txt>b.txt&&set /p a=<b.txt&&call set a=%%a:~5,1%%
第 13 楼
发表于 2008-01-24 17:46 · 中国 河北 唐山 联通
版主
★★★
操作系统爱好者
积分 1,113
发帖 392
注册 2002-11-11 00:00
23年会员
UID 228
性别 男
状态 离线
还有一个问题:
@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 ]
DOS之家 http://doshome.com 站长 葛明阳
第 14 楼
发表于 2008-01-24 18:39 · 中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
直接这样行不
@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 楼
发表于 2008-01-24 20:28 · 中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
命令行
@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 ]
简单!简单!再简单!
论坛跳转: