标题: 我编的DOS批处理..出错了.请看看.
[打印本页]
作者: gigacong
时间: 2004-6-19 00:00
标题: 我编的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中文的文件好难。
谢谢各位了。
有什么要改进的请详细说明一下。这是我第一个批处理, 请各位大力批评、指导。
作者: willsort
时间: 2004-6-20 00:00
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编辑过]