![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-23 18:29 |
共 47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,274 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 请帮忙分析一个比较简单的批处理! |
| 可打印版本 3,586 / 19 |
| 第1楼 martin325 | 发表于 2006-04-29 13:14 |
| 银牌会员 发帖 603 积分 1,582 | |
|
请帮忙分析一个比较简单的批处理! @echo off
set EXPAND=YES a:\xmsdsk 2092 /y /t >NUL cls findramd >nul SET PATH=%RAMDRIVE%\;A:\ if not exist %RAMDRIVE% goto er :er echo The "RAM Drive" is not exist. echo The system has to be shutdown! call Shut.BAT goto quit 上面的批处理的IF语句老是执行有问题,明明存在RAM Drive,它却老是检测出不存在! 请问应该如何改? |
|
| 第2楼 zhangxue | 发表于 2006-04-29 13:21 |
| 初级用户 发帖 82 积分 183 | |
|
@echo off
set EXPAND=YES a:\xmsdsk 2092 /y /t >NUL cls findramd >nul SET PATH=%RAMDRIVE%\;A:\ if not exist %RAMDRIVE% goto er goto quit :er echo The "RAM Drive" is not exist. echo The system has to be shutdown! call Shut.BAT goto quit |
|
| 第3楼 martin325 | 发表于 2006-04-29 13:39 |
| 银牌会员 发帖 603 积分 1,582 | |
|
经测试,还是老样子。
|
|
| 第4楼 zhangxue | 发表于 2006-04-29 14:02 |
| 初级用户 发帖 82 积分 183 | |
|
dos下的if exist对象只能是文件吧。
可以用dready或者cda这些程序检测%RAMDRIVE%是否准备好,另一种方法是,向这个%RAMDRIVE%复制一个文件,然后用if exist看看是否存在这个文件,即可判断这个%RAMDRIVE%是否准备好。 [ Last edited by zhangxue on 2006-4-29 at 14:14 ] |
|
| 第5楼 martin325 | 发表于 2006-04-29 14:15 |
| 银牌会员 发帖 603 积分 1,582 | |
|
这个是部分,不过下面的批处理不会影响的。
我估计是if not exist %RAMDRIVE% 的语法有问题 试过:if not exist %RAMDRIVE%:\format.com 也不行,而实际上是存在RAMDRIVE且其中有format.com 的。 我准备给%RAMDRIVE%:\format.com 加个双引号,试试看。 |
|
| 第6楼 zhangxue | 发表于 2006-04-29 14:21 |
| 初级用户 发帖 82 积分 183 | |
|
%RAMDRIVE%本身可能就带有冒号:
@echo off set EXPAND=YES a:\xmsdsk 2092 /y /t >NUL cls findramd >nul SET PATH=%RAMDRIVE%\;A:\ if exist %RAMDRIVE%\format.com goto quit :er echo The "RAM Drive" is not exist. echo The system has to be shutdown! call Shut.BAT goto quit |
|
| 第7楼 martin325 | 发表于 2006-04-29 14:21 |
| 银牌会员 发帖 603 积分 1,582 | |
|
也不行,检测不到RAMDRIVE!
|
|
| 第8楼 martin325 | 发表于 2006-04-29 15:45 |
| 银牌会员 发帖 603 积分 1,582 | |
|
按六楼的方法,OK了。
谢谢zhangxue |
|
| 第9楼 Climbing | 发表于 2006-04-30 16:13 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
楼主已经连续发表数个低级问题帖了,我开始关注你!
再发现类似情况,你的帖子我划为忽略系列。 [ Last edited by Climbing on 2006-4-30 at 16:15 ] |
|
| 第10楼 wl00560 | 发表于 2006-04-30 17:01 |
| 银牌会员 发帖 709 积分 1,384 | |
|
没有啊,这个问题低级么?嘻嘻,我可是写不出来的。
学习一下啦。 |
|
| 第11楼 darkradx | 发表于 2006-04-30 17:22 |
| 高级用户 发帖 420 积分 972 | |
|
1.findramd有兩種,MS的只認自家RAMDRIVE.SYS,另外一種通用
2.MS的修改變量, 另外一種增加變量 3.就我使用的那種通用性比較強的findramd來說, 應該這樣寫 :_DELVAR SET RAMDRIVE= IF NOT "%RAMDRIVE%"=="" GOTO _DELVAR findramd IF "%RAMDRIVE%"=="" GOTO _ER 4. IF NOT EXIST %RAMDRIVE%\format.com GOTO XXX 因為探測format.com,造成語法不通用 IF NOT EXIST %RAMDRIVE%\NUL GOTO XXX 這句實際上無效 IF NOT EXIST %RAMDRIVE% GOTO XXX 則是錯誤語法 |
|
| 第12楼 martin325 | 发表于 2006-04-30 20:50 |
| 银牌会员 发帖 603 积分 1,582 | |
|
:_DELVAR
SET RAMDRIVE= IF NOT "%RAMDRIVE%"=="" GOTO _DELVAR 以上的语法看不懂。初始执行的时候,如何启用:_DELVAR以及后面的“IF NOT "%RAMDRIVE%"==""”呢? |
|
| 第13楼 martin325 | 发表于 2006-04-30 21:27 |
| 银牌会员 发帖 603 积分 1,582 | |
|
看了一些帖子,明白一些了。
现在剩下不明白的: SET RAMDRIVE= 以及 "%RAMDRIVE%"=="" 分别表示什么含义? |
|
| 第14楼 不得不爱 | 发表于 2006-04-30 23:16 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
SET RAMDRIVE=
就是将变量RAMDRIVE清空 "%RAMDRIVE%"=="" 就是变量=空 |
|
| 第15楼 martin325 | 发表于 2006-04-30 23:24 |
| 银牌会员 发帖 603 积分 1,582 | |
|
如果去掉 SET RAMDRIVE=
就用下面的写法,正确吗? @echo off set EXPAND=YES a:\xmsdsk 2092 /y /t >NUL cls findramd >nul SET PATH=%RAMDRIVE%\;A:\ if %ramdrive%#==# goto noram ………… ………… :noram echo The "RAM Drive" is not exist. echo The system has to be shutdown! call Shut.BAT goto quit :guit |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |