![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-21 04:59 |
共 47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,270 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 请问在批处理文件里COMMAND的调用方法? |
| 可打印版本 1,776 / 6 |
| 第1楼 icevan | 发表于 2005-08-19 00:14 |
| 初级用户 发帖 12 积分 67 | |
|
请问在批处理文件里COMMAND的调用方法? 问题来源于无忧论坛里一篇《怎么判断多光驱中哪个光驱有盘?》的问题?
一位名为gotomsdos的朋友给出的一个方法为: 在CONFIG.SYS中使SHELL=COMMAND.COM /F /P /E:640 抑制ABORT,RETRY,FAIL出错提示,然后在编写一个F。BAT文件添加下面的内容: findcd /s if exist %cdrom1%\sound\sbinit.com goto cd1 if exist %cdrom2%\sound\sbinit.com goto cd2 if exist %cdrom3%\sound\sbinit.com goto cd3 if exist %cdrom4%\sound\sbinit.com goto cd4 :cd1 %cdrom1% set romcd=%cdrom1% goto end :cd2 %cdrom2% set romcd=%cdrom2% goto end :cd3 %cdrom3% set romcd=%cdrom3% goto end :cd4 %cdrom4% set romcd=%cdrom4% goto end :end 这样就可以判断光盘在哪个光驱里。但这样做可能会影响到其他需要手工选择判断选择错误提示的命令。 换句话说就是开始使用/F开关后能不能在关掉它? 后来我想能否在执行这些代码前加载一个新的COMMAND/F 来解释这个BAT文件,完成后再退出新的COMMAND。于是在文件开头加入“COMMAND/F” 可执行到这句的时候就中断了,停在了新的COMMAND提示符下。要退出后才能继续运行下面的命令。看来在BAT文件里加不了或者加载的方法不对。 然后又去掉文件里的COMMAND/F。再执行COMMAND/F/K F。BAT可以运行 可这达不到要求啊。。。 |
|
| 第2楼 JonePeng | 发表于 2005-08-19 15:07 |
| 金牌会员 发帖 1,883 积分 4,562 来自 广东广州 | |
|
运行COMMAND是直接加载一个新的COMMAND并提示DOS版本号和命令提示符,你可以试试运行COMMAND后,再运行需要自动应答“Abort, Retry, Fail”的批处理,最后exit,则新的COMMAND自动退出,返回原来的不自动应答的状态。
COMMAND /F F.BAT EXIT |
|
| 第3楼 willsort | 发表于 2005-08-19 16:30 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re icevan:
command /f 后面需要用 /c 开关调用你所需要忽视错误提示的批处理程序或者内外不命令;当然,问题不是单纯用 command /f 就可以解决的,你可以参考以下的链接: {12892}关于“硬盘杀手”批处理的讨论 |
|
| 第4楼 icevan | 发表于 2005-08-20 21:41 |
| 初级用户 发帖 12 积分 67 | |
|
谢谢楼上的2位帮助
现在有个新问题了: 用COMMAND/F/C调用F.BAT文件是可以自动应答"ABORT,RETRY,FAIL"后在退出这个新壳(不知道用壳来说对不对?) 但在新壳里产生的变量romcd也随之消失了,怎样才能在原来的环境里加入新环境里的变量呢?新环境里到是可以继承老环境里变量. 自己又试了下~找了个笨办法把新环境的变量加到老环境里, 修改F.BAT为:if exist %cdrom1%\tools\vc.ini goto cd1 (VC.INI为光盘里的文件) if exist %cdrom2%\tools\vc.ini goto cd2 :cd1 set romcd=%cdrom1% echo set cd-rom=%romcd%>scd.bat goto end :cd2 然后在调用SCD.BAT文件.谁有好的方法请告知一下? PS:<关于“硬盘杀手”批处理的讨论>能力不够没看懂~~ 再PS:COMMAND/F/C F.BAT执行后自动应答选择,但屏幕上还是出现了ABORT,RETRY,FAIL的提示~怎样能让它不显示呢? [ Last edited by icevan on 2005-8-20 at 22:49 ] |
|
| 第5楼 JonePeng | 发表于 2005-08-20 22:14 |
| 金牌会员 发帖 1,883 积分 4,562 来自 广东广州 | |
Originally posted by icevan at 2005-8-20 21:41: 呵呵,楼主这个问题引起了我的注意。我从没料到还有这种情况。 作为命令解释器的Command.com运行在以IO.SYS和MSDOS.SYS构建的DOS平台下,Command就好像Windows的壳Explorer.exe,那就姑且叫它为DOS的壳吧。 |
|
| 第6楼 willsort | 发表于 2005-08-20 22:43 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re icevan:
command 完全称为"壳",从 config.sys 中用于加载 command 的 shell 命令就可以看出来,而此时的核就应该是 io.sys(旧版还有msdos.sys),它们提供了很多中断服务和设备端口供“命令解释器”频繁的调用。 至于环境变量的回传,可以先在子壳(新壳)中将变量保存到批处理程序中,比如 echo set var=%var%>_return.bat ,待回到母壳(旧壳)后再将它提取出来即可。比如 call _return.bat 。 另外,如果觉得那篇讨论过于抽象,可以参考这个帖子: {8804}可自定义密码的密码程序(批处理) [ Last edited by willsort on 2005-8-20 at 22:45 ] |
|
| 第7楼 icevan | 发表于 2005-08-20 22:52 |
| 初级用户 发帖 12 积分 67 | |
|
又看了<关于“硬盘杀手”批处理的讨论>后解决了屏蔽ABORT,RETRY,FAIL的提示的问题。
不过又有问题了~ “在 XP 等 NT 类命令行 ctty 被取消了。在此类环境中,只能通过 2> nul 重定向错误消息。” 请问 2次重定向到NUL怎么做的? [ Last edited by icevan on 2005-8-21 at 16:22 ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |