![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-02 10:20 |
共 48,037 主题排行 / 350,122 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 如何判断驱动器的格式? |
| 可打印版本 957 / 2 |
| 第1楼 numbmeteor | 发表于 2006-11-12 14:07 |
| 初级用户 发帖 7 积分 26 | |
|
如何判断驱动器的格式? rem 1.赋初值为0
for %%c in (c d e f g h i j k l m n o p q r s t u v w x y z) do set test%%c=0 rem 2.如果盘符存在则相应变量值为1 for %%c in (c d e f g h i j k l m n o p q r s t u v w x y z) do (if exist %%c: (set test%%c=1)) rem 3.如果是fat32格式则改相应变量值为2 for %%c in (c d e f g h i j k l m n o p q r s t u v w x y z) do (CHKNTFS %%c:|FIND /I "FAT32" IF %Errorlevel% equ 0 set test%%c=2) rem 4.如果是ntfs格式则改相应变量值为3 for %%c in (c d e f g h i j k l m n o p q r s t u v w x y z) do (CHKNTFS %%c:|FIND /I "NTFS" IF %Errorlevel% equ 0 set test%%c=3) rem 5.列出盘符相应变量最后的值以判断执行结果是否正确 for %%c in (c d e f g h i j k l m n o p q r s t u v w x y z) do set test%%c pause 我的分区是这样的,c,d,e盘是NTFS,f,g盘是FAT32,h盘是光驱,i盘是虚拟光驱,那么执行上面批处理后理想的结果应该是:testc=3,testd=3,teste=3,testf=2,testg=2,testh=1,testi=1,其它的盘都应是test(?)=0。 但事实上第三步执行完全部都为2,第四步执行无效,最后的结果都为2。而我如果把|||CHKNTFS %c:|FIND /I "NTFS" IF %Errorlevel% equ 0 set test%%c=3|||这两条命令直接在CMD中运行结果是完全正确的,所有我以为是因为把它们放在了for命令里使用而造成的,可能errorlevel返回值并不是find的返回值了,我这么想。 请各位大师们指点指点吧,小弟在此谢过了 |
|
| 第2楼 lxmxn | 发表于 2006-11-13 11:37 |
| 版主 发帖 4,938 积分 11,386 | |
|
试试下面这个代码,没有测试。 我的环境是:Windows xp sp1 @ CMD Shell |
|
| 第3楼 numbmeteor | 发表于 2006-11-15 02:52 |
| 初级用户 发帖 7 积分 26 | |
|
谢谢lxmxn了 经测试确实可行,但我仍有迷团未解,想知道第三步的if errorlevel那里为什么不能得到正确的结果?
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |