中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 我编的DOS批处理..出错了.请看看.
作者:
标题: 我编的DOS批处理..出错了.请看看. 上一主题 | 下一主题
gigacong
初级用户




积分 116
发帖 6
注册 2004-6-19
状态 离线
『楼 主』:  我编的DOS批处理..出错了.请看看.

我在<<>区也发过..但没有什么人回答.有位大哥回答的也不行..所以..来这里也贴贴..别删哦..


各位大大们。我可是初学哦。。
这几天我就编了一个傻瓜式中文菜单的启动盘批处理。。打算制作成装机工具光碟用的。

但,很奇怪!在win98的MSdos下面运行正确,但用磁盘启动时,运行不正确了。它会自己选择第一项选择,我都不明白,哪位大哥帮忙看看,我哪里写错了。


autoexec.bat配置

@echo off
path a:\;z:\boot;z:\ghost;z:\dm;z:\winxp
LH Mscdex.Exe /D:cd00 /l:z
smartdrv 32000
z:
tw
rem 加载中文显示
echo.
echo                     欢迎使用懒虫工具碟
echo.
echo                         请注意操作
echo.
echo.
echo                        [1] 分    区
echo                        [2] 格式化C盘
echo                        [3] 安装WinXP
echo                        [4] 制作GHOST
echo                        [5] MS-DOS
echo.
echo.
echo                                               懒虫工作荣誉出品  2004.06.17
echo.

echo  [请选择序号1,2,3,4,5]
choice /c:12345 /n
if errorlevel 5 goto c_05
if errorlevel 4 goto C_04
if errorlevel 3 goto C_03
if errorlevel 2 goto C_02
if errorlevel 1 goto C_01


:C_01
dm
goto end

:C_02
format c:/autotest/q/u
goto end

:C_03
tw/q
Ghost.exe -CLONE,MODE=PLOAD,SRC=z:\winxp\xinxp.GHO 1,DST=1 1 -SURE -RB
goto end

:C_04
tw/q
GHOST
goto end

:c_05
tw/q
goto end

:end




config.sys配置

device=himem.sys
buffers=15,0
files=60
buffers=45
dos=umb,high
stacks=9,256
device=oakcdrom.sys /D:cd00
device=btdosm.sys
device=flashpt.sys
device=btcdrom.sys /D:cd00
device=aspi2dos.sys
device=aspi8dos.sys
device=aspi4dos.sys
device=aspi8u2.sys
device=aspicd.sys /D:cd00
devicehigh=ramdrive.sys /D:cd00
lastdrive=z

用磁盘运行后批处理自己选择第一项选择..菜单是出来了.但没有选择的地方.只是可以看.
这个批处理在win98的ms-dos方式上试过,没有事.
这到底是怎么一回事..

哪个大大提供别的中文显示文件,或拼音、五笔输入法。
因为有时间在DOS COPY中文的文件好难。

谢谢各位了。

有什么要改进的请详细说明一下。这是我第一个批处理, 请各位大力批评、指导。


2004-6-19 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


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

Re gigacong:

  Quote:
echo  [请选择序号1,2,3,4,5]
choice /c:12345 /n
if errorlevel 5 goto c_05
if errorlevel 4 goto C_04
if errorlevel 3 goto C_03
if errorlevel 2 goto C_02
if errorlevel 1 goto C_01


:C_01

  这很可能是CHOICE的问题,请检查你的启动盘中的CHOICE版本是否正确,并且位于批处理可调用的路径。因为CHOICE无法执行时,系统的ERRORLEVEL一般会保持为零,另外在某些特殊情况下也会自动返回零值的ERRORLEVEL,所以所有的GOTO都将无法执行,以致于程序进程错乱。

  这个错误引伸出了一个防御性程序设计的问题,虽然批处理是一种简单的脚本语言,但是在某些应用场合,我们仍然需要设计一些防御性代码,以免系统故发生故障时造成不必要的损失。在这个程序中,我们就需要在if errorlevel 1...之后加上一句 GOTO Error 或者简单的 GOTO End,防止因为各种原因(比如磁盘损坏导致CHOICE损坏或者CHOICE的路径未写进默认路径中)而导致Errorlevel为零时,程序进程窜入下面的功能模块,如果这个模块恰巧时自动格式化模块,那么损失将是严重的。



[此贴子已经被作者于2004-6-20 下午 12:41:53编辑过]






※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2004-6-20 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: