中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-08 21:13
47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行
DOS批处理 & 脚本技术(批处理室) » [已解决]再次求解判断盘符问题
可打印版本  1,175 / 8
第1楼 quya 发表于 2008-06-02 11:52
高级用户 发帖 172 积分 558 来自 江苏
[已解决]再次求解判断盘符问题
原来 for /f "skip=2 tokens=1 delims=:" %%a in ('%var1%^|more') do (
%var2% %%a: | find/i /v "cd-rom">>alldrivers.txt
后面少了个括号

根据帖子 http://www.cn-dos.net/forum/viewthread.php?tid=40750&fpage=4

我重新拟了个思路:

我想在所有盘符上寻找一个特定文件, 而且以光盘为优先, 为了避免可恶的错误信息, 我根据这儿网友的思路写了以下代码.



结果并没有生成 readydrivers.txt 文件

于是我把它再简单化如下



for /f "tokens=1 delims=:" %%a in (drivers.txt) do (echo %%a) 还是没执行!!

我于是直接在命令符下执行



结果准确无误. 这是怎么回事??

另, 可否代码再简洁点, 比如不生成临时文件之类的.

再另, "fsutil" 只能在 XP PRO环境由管理员身份执行, 如果想避免这种情况. "fsutil fsinfo drives" 可用外部程序 FINDCD (3.11k)代替, "fsutil fsinfo drivetype" 用DRVTYPES (9.09k) 代替, 只需少量修改下.

[ Last edited by quya on 2008-6-2 at 12:56 PM ]
第2楼 26933062 发表于 2008-06-02 15:21
银牌会员 发帖 879 积分 2,268
不用fsutil 判断光驱盘符的方法始终没有想出来。
第3楼 pusofalse 发表于 2008-06-02 15:29
银牌会员 发帖 646 积分 1,604
我在我电脑上执行 if not exist g:\ echo succeed 结果成功执行
我的确有G盘,的确是光驱 我想是不是不放入光盘时是不是就“不存在光驱”

用这种方法,不用fsutil也可以了啊~


for %%a in (c d e f g h i j k ... n) do if not exist %%a:\ echo %%a为光驱&goto next
:next
pause

[ Last edited by pusofalse on 2008-6-2 at 03:32 PM ]
第4楼 26933062 发表于 2008-06-02 15:33
银牌会员 发帖 879 积分 2,268
问题是他有2 个光驱,一个有盘,一个无盘。
要怎么知道他们的盘符?不用fsutil
第5楼 pusofalse 发表于 2008-06-02 15:50
银牌会员 发帖 646 积分 1,604
跟踪注册表的硬件信息~ 找到关于光驱的项 我想有盘或无盘 键值肯定是不一样的~
第6楼 quya 发表于 2008-06-02 16:30
高级用户 发帖 172 积分 558 来自 江苏
26933062 的代码真的是致精致简, 看不太懂但确实执行了正确结果.

但有一个小小的缺陷, 就是忽略了 C 盘.

用我那种办法, 可以用条 ECHO 语句 插入 C 盘 在 光盘之后, 但用你那种办法, 我只能将 C盘 插在第一个或者最后一个, 如何插在中间? 如果增加代码似乎又不合算.

另外我这段程序是在安装系统时调用的, 我想到了有些盘可能没来得及格式化, 会出现 "invalid media", 或者软盘没有插入, 会出现 "Abort? Retry?..." 之类的信息, 不知道

dir %%a: >nul 2>nul

能否屏蔽所有上述信息? 我感觉可能有问题, 我今天回去会测试. 如果无法屏蔽错误信息, 有没有更好的办法?
第7楼 26933062 发表于 2008-06-02 16:37
银牌会员 发帖 879 积分 2,268
要 c 盘
第8楼 quya 发表于 2008-06-02 16:47
高级用户 发帖 172 积分 558 来自 江苏
简矣、妙矣、无以复加矣!

我对楼上的敬佩,有如黄河之水连绵不绝,黄河决堤一发不可收拾。

决定倾我所囊, 贡献我有限的积分. 怎么不能给积分?(说不能给自己) 而且最多给2 ?

[ Last edited by quya on 2008-6-2 at 04:49 PM ]
第9楼 quya 发表于 2008-06-02 21:00
高级用户 发帖 172 积分 558 来自 江苏
Originally posted by quya at 2008-6-2 04:30 PM:
......另外我这段程序是在安装系统时调用的, 我想到了有些盘可能没来得及格式化, 会出现 "invalid media", 或者软盘没有插入, 会出现 "Abort? Retry?..." 之类的信息, 不知道

dir %%a: >nul 2>nul

能否屏蔽所有上述信息? 我感觉可能有问题, 我今天回去会测试. 如果无法屏蔽错误信息, 有没有更好的办法? .


报告一下, 在XP DOS 环境下并没有出现我担心的纯DOS下出现的问题。

DIR 一个未格式化的盘或者无盘的软驱,出现错误信息, 但无弹出窗口错误信息。可以 2>nul 屏蔽

if exist ldirver]\nul command, 未格式化盘操作成功,无错误码,无盘软驱则有弹出窗口, 而且无法屏蔽,和无盘光驱类似。 再次证明if exist 寻找特定盘符的不科学性。

一个好的程序,容错是最重要的, 至于代码的巧妙,那是高人的专利,我等菜鸟无法望其项背, 只好偷偷学几招, 以为窃喜。
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023