中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-01 13:54
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]批处理中断问题 查看 1,851 回复 7
楼 主 [求助]批处理中断问题 发表于 2006-03-22 19:08 ·  中国 重庆 联通
高级用户
★★
积分 772
发帖 273
注册 2004-10-23 00:00
21年会员
UID 32861
性别 男
状态 离线
命令如下:
set drv=c d e f g h i j k
for %%b in (%drv%) do if exist %%b:\123.exe set s=%%b

当如果接了U盘或者磁盘上有的分区格式在DOS下无法识别时这条命令就会中断导致S值为空怎么解决这个问题
http://www.msfans.net/bbs/
2 发表于 2006-03-23 12:13 ·  中国 河北 石家庄 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
我这方法可能比较笨。
1.

::main.bat
...
set drives=
for %%D 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 Call IsReady %%D
....

2.
::IsReady.BAT
@echo off
dready %1 > nul
if errorlevel 1 goto _quit
if errorlevel 0 set drives=%1 %drives%
:_quit

3.

http://nufans.net/clone/dostools/dready.com
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
3 发表于 2006-03-23 18:36 ·  中国 广西 贺州 电信
初级用户
积分 58
发帖 17
注册 2006-03-22 10:05
20年会员
UID 52567
状态 离线
好东西,
4 发表于 2006-03-23 19:31 ·  中国 重庆 九龙坡区 联通
高级用户
★★
积分 772
发帖 273
注册 2004-10-23 00:00
21年会员
UID 32861
性别 男
状态 离线
Originally posted by Climbing at 2006-3-23 12:13 PM:
我这方法可能比较笨。
1.

::main.bat
...
set drives=
for %%D 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 Call IsReady %%D
....

2.
::IsReady.B ...


谢谢Climbing的提示,一开始我想到类似的解决方法不知道有dready这个命令,是不是系统自带的如果是自带的话我现在可以解决了在你的上面修改了一下没有测试过不知道可以吗

1.

::main.bat
...
set drives=
set finddrive=
for %%D 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 Call IsReady %%D
....

2.
::IsReady.BAT
@echo off
dready %1 > nul
if errorlevel 1 goto _quit
if errorlevel 0 goto _find

:_quit
end

:_find
set drives=%1 %drives%
if exist %drives%\123.exe set finddrive=%drives%
http://www.msfans.net/bbs/
5 发表于 2006-03-23 21:25 ·  中国 山西 临汾 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
Re chenhui530 & Climbing:

在论坛上许久不见陈兄和石头兄的踪迹了,不知近况如何?

dready.com是第三方工具,磁盘检测的批处理中经常用到,石头兄已经在2楼给出链接了。不用第三方工具的算法也有,不过相对麻烦很多,而且还不足够完善。可以参考下面的链接:

(已结)关于“硬盘杀手”批处理的讨论
http://www.cn-dos.net/forum/viewthread.php?tid=12892

如果插入U盘,使用原来的程序应该不会导致%s%为空,除非123.exe根本就不存在。而NTFS分区对于DOS是透明的,它不会被分配盘符,与%s%为空的应该也无关系,如果123.exe在NTFS分区上,那么使用dready也是无用的。

这个程序和其它类似程序的缺陷在于,当它所枚举的所有盘符中,出现了代表无软盘的软驱,无光盘的光驱或其他类似未准备设备的盘符时,将直接抛出错误退出程序,从而无法继续以下的进程。这在以上的链接中有详细讨论,而这也是dready被使用的根本原因。

[ Last edited by willsort on 2006-3-24 at 08:44 ]
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
6 发表于 2006-03-23 23:00 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
20年会员
UID 50550
状态 离线
像这种情况我认为用dir+find应该更有效一些:
dir %%b:\123.exe 1>nul 2>nul
然后通过errorlevel来判断是否存在%%b:\123.exe
7 发表于 2006-03-24 20:37 ·  中国 重庆 联通
高级用户
★★
积分 772
发帖 273
注册 2004-10-23 00:00
21年会员
UID 32861
性别 男
状态 离线
re willsort
好久时间没上DOS联盟了,一个是因为这段时间比较忙有很多程序需要编写。其实自从51CT关闭后就没再看见willsort兄的踪迹了。最近在编写一个基于GHOST全自动备份还原工具的时候遇到了个奇怪的地方我在公司的电脑上只要把U盘接上就会出问题导致那条FOR语句有问题从而使一个关键变量值不对。但是奇怪的是我在自己的机器上接上U盘又没有问题。
我自己没有网站现给大家一个站点是我给他们做的一OEM作品
大家可以帮忙测试看下下载地址是:http://www.ylmf.net/downinfo/547.html
最近刚完成网络版等大家解决了给大家玩玩
http://www.msfans.net/bbs/
8 发表于 2006-03-25 21:31 ·  中国 河北 石家庄 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
嗯,我最近单位的事情也比较多,很少有时间上论坛了。不过,这几天闲了一些,就到论坛来转转。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
论坛跳转: