中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: [求助]批处理中断问题 上一主题 | 下一主题
chenhui530
高级用户





积分 772
发帖 273
注册 2004-10-23
状态 离线
『楼 主』:  [求助]批处理中断问题

命令如下:
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/
2006-3-22 19:08
查看资料  发送邮件  发短消息 网志  OICQ (77740821)  编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 2 楼』:  

我这方法可能比较笨。
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



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2006-3-23 12:13
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
MIN
初级用户





积分 58
发帖 17
注册 2006-3-22
状态 离线
『第 3 楼』:  

好东西,

2006-3-23 18:36
查看资料  发短消息 网志   编辑帖子  回复  引用回复
chenhui530
高级用户





积分 772
发帖 273
注册 2004-10-23
状态 离线
『第 4 楼』:  



  Quote:
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/
2006-3-23 19:31
查看资料  发送邮件  发短消息 网志  OICQ (77740821)  编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 5 楼』:  

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:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-3-23 21:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 6 楼』:  

像这种情况我认为用dir+find应该更有效一些:
dir %%b:\123.exe  1>nul 2>nul
然后通过errorlevel来判断是否存在%%b:\123.exe

2006-3-23 23:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chenhui530
高级用户





积分 772
发帖 273
注册 2004-10-23
状态 离线
『第 7 楼』:  

re willsort
好久时间没上DOS联盟了,一个是因为这段时间比较忙有很多程序需要编写。其实自从51CT关闭后就没再看见willsort兄的踪迹了。最近在编写一个基于GHOST全自动备份还原工具的时候遇到了个奇怪的地方我在公司的电脑上只要把U盘接上就会出问题导致那条FOR语句有问题从而使一个关键变量值不对。但是奇怪的是我在自己的机器上接上U盘又没有问题。
我自己没有网站现给大家一个站点是我给他们做的一OEM作品
大家可以帮忙测试看下下载地址是:http://www.ylmf.net/downinfo/547.html
最近刚完成网络版等大家解决了给大家玩玩



http://www.msfans.net/bbs/
2006-3-24 20:37
查看资料  发送邮件  发短消息 网志  OICQ (77740821)  编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 8 楼』:  

嗯,我最近单位的事情也比较多,很少有时间上论坛了。不过,这几天闲了一些,就到论坛来转转。



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2006-3-25 21:31
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: