标题: [求助]批处理中断问题
[打印本页]
作者: chenhui530
时间: 2006-3-22 19:08
标题: [求助]批处理中断问题
命令如下:
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值为空怎么解决这个问题
作者: Climbing
时间: 2006-3-23 12:13
我这方法可能比较笨。
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
作者: MIN
时间: 2006-3-23 18:36
好东西,
作者: chenhui530
时间: 2006-3-23 19:31
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%
作者: willsort
时间: 2006-3-23 21:25
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 ]
作者: 3742668
时间: 2006-3-23 23:00
像这种情况我认为用dir+find应该更有效一些:
dir %%b:\123.exe 1>nul 2>nul
然后通过errorlevel来判断是否存在%%b:\123.exe
作者: chenhui530
时间: 2006-3-24 20:37
re willsort
好久时间没上DOS联盟了,一个是因为这段时间比较忙有很多程序需要编写。其实自从51CT关闭后就没再看见willsort兄的踪迹了。最近在编写一个基于GHOST全自动备份还原工具的时候遇到了个奇怪的地方我在公司的电脑上只要把U盘接上就会出问题导致那条FOR语句有问题从而使一个关键变量值不对。但是奇怪的是我在自己的机器上接上U盘又没有问题。
我自己没有网站现给大家一个站点是我给他们做的一OEM作品
大家可以帮忙测试看下下载地址是:
http://www.ylmf.net/downinfo/547.html
最近刚完成网络版等大家解决了给大家玩玩
作者: Climbing
时间: 2006-3-25 21:31
嗯,我最近单位的事情也比较多,很少有时间上论坛了。不过,这几天闲了一些,就到论坛来转转。