![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-13 20:36 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS学习入门 & 精彩文章 (教学室) » 请问有没有批处理的详细教程? |
| 可打印版本 731 / 8 |
| 第1楼 十三 | 发表于 2004-07-07 00:00 |
| 初级用户 发帖 10 积分 143 | |
|
请问有没有批处理的详细教程? 我在网上一直找不到批处理的详细教程。
请问那有? |
|
| 第2楼 linux1234 | 发表于 2004-07-08 00:00 |
| 中级用户 发帖 42 积分 293 | |
|
俺也想更多地知道这方面的知识
|
|
| 第3楼 linux1234 | 发表于 2004-07-08 00:00 |
| 中级用户 发帖 42 积分 293 | |
|
提供一点,不敢说详细,以前收集的,不敢独享,与大家共同学习.
1.批处理命令 批处理文件或批处理程序是一个包含若干MS-DOS命令的正文文件,扩展名为.BAT。 当在命令提示符下敲入批处理程序的名称时,MS-DOS成组执行此批处理程序中的命令。 任何在命令提示符下可使用的命令都可用在批处理程序中。此外,下面MS-DOS命令 是专门在批处理程序中使用的。 可使用COMMAND /Y命令来执行一批处理程序中的命令,并可选择跳过或执行某个命 令。该功能在查找批处理程序的错误时十分有用。更多信息,请参见 2.CALL 从一个批处理程序中调用另一个批处理程序,而不会引起第一个批处理的中止。 语法 CALL filename 参数 filename 指定要调用的批处理程序的名字及其存放处。文件名必须用.BAT作扩展名。 batch-parameters 指定批处理程序所需的命令行信息。 CALL─注解 使用批处理参数 批处理参数可包含传递给批处理程序的任何信息,包括开关项、文件名、可替 换参数%1至%9,以及环境变量,如%baud%。 使用管道和重定向符 在CALL命令中,不要用管道("|")和重定向符号("<<","",和">>")。 递归调用 可以创建一个批处理程序调用它本身,但必须有一条exit命令。否则,父、子批 处理程序将无限循环下去。 CALL─例子 从另一批处理程序运行CHECKNEW.BAT,在父批处理程序中可包含命令: call checknew 假设父批处理程序接收两个可替换参数,并希望将它们传给CHECKNEW.BAT。可在父 批理程序中使用命令: call checknew %1 %2 3.CHOICE 在批处理程序中,提示用户作一选择。显示一指定的提示符并暂停等待用户从一组 指定的键中作出选择。该命令只能用在批处理程序中。 有关ERRORLEVEL参数的详细介绍,见 和 命令。 语法 CHOICE keys] c,nn] 参数 text 指出要在提示符前显示的正文。仅当在提示符前的正文中包括有开关字符(/)作 为正文内容时,才要用双引号。如果不指定正文,CHOICE仅显示一个提示符。 开关项 /Ckeys 指定提示中可接受的按键。显示时,这些键出现在内,键之间以逗号分隔,最后 跟一问号。若不指定/C开关,CHOICE采用隐含值YN。冒号(:)是可选项。 /N 让CHOICE不显示提示符,但提示符前的正文仍然显示。若指定了/N开关,所指定的 按键仍有效。 /S 使CHOICE区别大小写字母。若没指定/S,CHOICE对任何用户指定的键,大小写不作 区分。 /Tc,nn 在对某一指定关键字作默认设置前,让CHOICE等待一指定秒数的时间。 /T转换中的值如下所设: c 指定等待nn秒后作为默认值的那个字符。该字符必须出现在/C开关后的按键 集中。 nn 指定暂停的秒数。可接受0-99之间的值。若指定为0,表示默认设置前不暂停。 CHOICE─注解 ERRORLEVEL参数 第一个键的返回值为1,第二个键的返回值为2,第三个键的返回值为3,依此类推。 如果用户按下的键不在指定的键中,CHOICE响一声警铃(即,它向控制台发送字符BEL 或07h)。 如果CHOICE检测到一错误条件,将返回ERRORLEVEL值255。若用户按了CTRL+BREAK 或CTRL+C,CHOICE返回ERRLRLEVEL值0。 在批处理程序中用ERRORLEVEL参数时,可采用递减顺序列出对各返回进行的处理。 CHOICE─例子 在批处理文件用CHOICE时用户所见的信息 如果在批处理文件中采用了以下语法形式: choice /c:ync 则用户在CHOICE运行时,将看到: ? 在上例语句中,加入正文: choice /c:ync Yes, No, or Continue CHOICE启动时,用户看到: Yes, No, or Continue ? 去掉提示符后用户所见的信息 如下例,在批处理程序中用/N转换把提示符去掉: choice /n Yes, No, or Continue? 在CHOICE执行时,用户只见到指定的正文: Yes, No, or Continue? 用了T开关后用户所见的信息 如果在批处理程序中用以下语句: choice /c:ync /t:n,5 当CHOICE执行时,用户会看到: ? 5秒后,用户没按任何键,CHOICE就选择N且返回一个ERRORLEVEL值2。如果5秒内按 下某键,CHOICE返回与用户选择相应对的值。 启动计算机时,若想让用户选择是否要消除C盘的碎片,可在AUTOEXEC.BAT文件中 加入下列语句: choice Defrag drive /ty,5 if errorlevel 2 goto SkipDefrag defrag c: :SkipDefrag 若在5秒内按下N,DEFRAG将不会运行,CHOICE返回ERRORLEVEL值为2。如果5秒内没 按下N,或选择了Y,则对C盘运行DEFRAG。 在批处理程序中使用CHOICE 下面的批处理程序演示如何利用CHOICE选项,让用户选择执行三个程序之一: MS-DOS编辑器、Microsoft Anti-virus或Microsoft Backup。 注意,这里IF ERRORLEVEL语句是按递减序列出的。如果由CHOICE返回ERRORLEVEL 参数的值大于或等于IF命令所指定的参数,MS-DOS将认为IF语句为真。 @echo off cls echo. echo A Microsoft Editor echo B Microsoft Anti-Virus echo C Microsoft Backup echo. choice /c:abc Choose an option if errorlevel 3 goto MSBackup if errorlevel 2 goto Msav if errorlevel 1 goto Edit :Edit edit goto End :Msav msav goto End :Msbackup msbackup goto End :End 4.ECHO 当程序运行时,显示或隐藏批处理程序中的正文。也可用于允许或禁止命令的回显。 在运行批处理程序时,MS-DOS一般在屏幕上显示(回显)批处理程序中的命令。 使用ECHO命令可关闭此功能。 语法 ECHO 若要用echo命令显示一条命令,可用下述语法: echo 参数 ON|OFF 指定是否允许命令的回显。若要显示当前的ECHO的设置,可使用不带参数的ECHO 命令。 message 指定让MS-DOS在屏幕上显示的正文。 相关命令 有关暂停批处理程序执行的方法,请参见命令。 ECHO─注解 用ECHO命令显示信息 当ECHO被关闭时,ECHO message命令很有用。若要显示一若干行长的信息而不显 示其它命令,可在批处理程序中先执行ECHO OFF命令之后,再执行若干个ECHO message 命令。 隐藏命令提示 如果在命令行中使用了ECHO OFF命令,则在屏幕上将不显示命令提示。若要重新 显示命令提示,只需键入ECHO ON即可。 禁止MS-DOS回显一行 在一批处理程序中的某一命令前可以插入一"@"字符,禁止MS-DOS回显此行。 回显一空行 若要在屏幕上回显一空行,可输入ECHO及一个圆点(ECHO.),但其间不能加入空 格。 显示管道及重定向字符 ECHO命令不能显示管道(|)或重定向字符()。 ECHO─例子 下面是一个批处理程序,它包含三行信息,在三行信息前后各有一空行。 echo off echo. echo This batch program echo formats and checks echo new disks echo. 如果要关闭ECHO而又不回显ECHO命令本身,则在命令前加一"@"符即可,即: @echo off 在同一命令行上可使用IF及ECHO命令,如: if exist *.rpt echo The report has arrived。 5.FOR 对一组文件逐一运行一条命令。该命令可用在批处理文件中,也可命令提示符下 直接调用。 语法 FOR在批处理程序中的使用语法如下: FOR %%变量 IN (集合) DO 命令 FOR在命令提示符下的使用语法如下: FOR %变量 IN (集合) DO 命令 参数 %%变量或%变量 代表一个可替换的变量。FOR命令将用指定的一组文件中的每一个文本字符串来替 换%%变量(或%变量),直到此命令(在命令参数中指定的)处理完所有的文件为止。 用%%变量来执行一批处理程序中的FOR命令。用%变量来执行命令提示符下的FOR命令。 集合 指定一个或多个要用特定命令对其进行处理的文件或文本字符串。圆括号必须得有。 命令 指定要对一组文件中每一文件进行处理的命令。 命令参数 指定要用于指定命令(如果指定的命令使用了任何参数或开头)的任何参数或开关。 FOR─注解 使用关键字IN及DO IN和DO并不是参数,但FOR命令中要求这两个关键字。如果省略了这两个关键字, 则MS-DOS将显示一错误信息。 使用可替代变量 除了数字0到9之外,你可把任何字符用作变量,以避免与批处理参数%0到%9的混淆。 对简单的批处理程序来说,象%%F这样的一个单一字符就足够了。在复杂的批处理程序 中,你可把多个值用于变量以区分不同的可替换变量。然而,在同一命令行上不能嵌套 (增加)多个FOR命令。 指定一组文件 集参数可代表一组文件或几组文件。你可用通配符(*及?)来指定一文件集。下面 是合法的文件集: (*.doc) (*.doc *.txt *.me) (jan*.doc jan*.rpt feb*.doc feb*.rpt) (ar??1991.* ap??1991.*) 当你使用FOR命令时,集中的第一个值将代替%%变量(或%变量),而为了处理此值 MS-DOS将执行指定的命令;此过程一直持续进行,直到MS-DOS将对应于集中的值(或多 值)的所有文件(或多组文件)处理完毕为止。 FOR─例子 假设你想用TYPE命令来显示当前目录下扩展名.DOC或.TXT的所有文件的内容。为了 做到这一点要使用可替代变量%F,并在命令提示符下输下面的命令。 for %f in (*.doc *.txt) do type %f 在此例中,当前目录下扩展名为.DOC或.TXT的每一个文件将代替%F变量,直到显示 出每一个文件的内容为止。若把每一个%F都替换成%%F,则此命令可用于一批处理文件。 否则,MS-DOS将忽略此变量而显示错误信息。 MS-DOS支持你想用于特定命令的开关、管道及重定向符。例如,为了把前一例的输 出送到PRN(默认打印机口),应输入下面的命令: for %f in (*.doc *.txt) do type %f > prn: 6.GOTO 在批处理文件中,把MS-DOS定向到某一行,这一行由指定的标号来标记。该命令只 能用在批处理文件中。 GOTO命令在批处理文件中把MS-DOS定向到由标号指定的一行。当MS-DOS找到此 标号,就从下一行开始执行命令。 语法 GOTO label 参数 label 指定MS-DOS应转向哪一行。 GOTO─注解 标号的合法值 标号参数不应包含空格、分号和等号之类的分隔符。 GOTO 使用每一标号的前8个字符 GOTO命令只识别标号的前8个字符。因此,标号“hithere01”和“hithere02”都 等价于“hithere0”。 匹配标号参数和批处理文件中的标号 在GOTO命令行中指定的标号必须与批处理文件中的某个标号相匹配。批处理文件 的标号必须以冒号打头。 若指定的标号未包含在批处理文件中,批处理文件将被中止,MS-DOS显示下列 信息: Label not found MS-DOS认为以冒号打头的一行是标号,而不是命令,并忽略此行的所有命令。 使用GOTO完成条件操作 GOTO常与其它命令一起使用,以完成条件操作。有关GOTO在条件操作中的使用, 请参阅命令。 GOTO─例子 下面的批处理文件把驱动器A的磁盘格式化为系统盘。若操作成功,GOTO命令就把 MS-DOS定向到“end”标号。 echo off format a: /s if not errorlevel 1 goto end echo An error occurred during formatting. :end echo Successfully formatted the disk in drive A. 7.IF 批处理程序中的条件判断语句。若IF命令指定的条件为真,则MS-DOS执行条件下面 的命令;否则,MS-DOS忽略此命令。此命令只能在批处理程序中使用。 语法 IF ERRORLEVEL number command IF string1==string2 command IF EXIST filename command 参数 NOT 指出若条件为假时,MS-DOS应该执行后面的命令。 ERRORLEVEL number 当上一个应用程序返回的退出码大于等于number这个数时条件为真。 command 指定条件为真时,MS-DOS将执行的命令。 string1==string2 仅当string1和 string2相同时条件为真。这两个值可以是字符串或批处理变量( 例如%1)。字符串不需用引号括起来。 EXIST filename 当filename这个文件存在时条件为真。 IF─例子 下面这个例子用来测试目录是否存在。IF命令不能直接用来测试目录,但空(NUL) 设备存在于硬盘的每一个目录下。因此,可以通过空设备来测试硬盘目录是否存在。 if exist c:\mydir\nul goto process 在下面这个例子中,当MS-DOS未找到PRODUCT.DAT时显示信息"Can't find data file": if not exist product.dat echo Can't find data file 每个程序中止时都会返回一个退出码。例如,值为0通常用于表示程序正常执行完 毕。ERRORLEVEL参数用于测试退出码的值。 在下面这个例子中,当格式化驱动器A中的磁盘时,若出错则会显示一条错误信息。 若未出错,则跳过错误信息。 :begin echo off format a: /s if not errorlevel 1 goto end echo An error occurred during formatting. :end echo End of batch program. 使用ERRORLEVEL参数的另一个例子,见命令。 8.PAUSE 暂停批处理程序的执行并显示一条消息,提示用户按任意键继续执行。只能在批处 理程序中使用该命令。 语法 PAUSE PAUSE─注解 提示用户继续执行批处理程序 MS-DOS在执行PAUSE命令时显示以下消息: Press any key to continue . . . :m541 将批处理文件分为若干段 如果按Ctrl+C终止批处理程序,MS-DOS显示以下消息: Terminate batch job (Y/N)? 如果按Y,则终止批处理程序,返回操作系统。因此,可在可能无需执行的批处理 程序段前加一条PAUSE命令。当批处理程序执行到PAUSE命令时,按Ctrl+C然后按Y,可 终止批处理程序。 PAUSE─例子 如果希望批处理程序提示用户更换驱动器中的磁盘,可创建如下批处理命令: @echo off :begin copy a:*.* echo Please put a new disk into drive A pause goto begin 此例将A盘中的所有文件拷贝到当前目录中。提示在A盘中更换另一张磁盘后,PAUSE 命令暂停批处理程序,这样就有时间更换磁盘,然后按任意键继续执行。批处理程序为 一个死循环程序,GOTO BEGIN命令将执行跳转到批处理文件的begin标号。要终止该批处 理程序,可按Ctrl+C然后按Y。 9.REM 在批处理文件或CONFIG.SYS中加入注解。也可用REM命令来屏蔽命令(在CONFIG.SYS 中也可以用分号(;)代替REM命令,但在批处理文件中则不能替代)。 语法 REM 参数 string 指定要屏蔽的命令或要包含的注解。 相关命令 关于显示消息的信息,请参阅命令。 REM─注解 使用ECHO命令显示注解 REM命令不在屏幕上显示注解。要在屏幕上显示注解时,必须在批处理或文件 CONFIG.SYS中使用ECHO ON命令。 :m550a 批处理文件注解中字符的限制 在批处理文件中不可使用重定向符()或管道字符(|)。 :m550 使用REM加入垂直间隙 虽然可以在批处理文件中用无参数的REM命令加入垂直间隙,但也可以使用空行。 MS-DOS在处理批处理程序时会忽略空行。 REM─例子 下例的批处理文件中使用了REM命令,用它作为注释和加入垂直间隙: @echo off rem This batch program formats and checks new disks. rem It is named CHECKNEW.BAT. rem echo Insert new disk in drive B. pause format b: /v chkdsk b: 下例在CONFIG.SYS文件中的COUNTRY命令前加入一条注解: rem Set country code to France country=033 下例用分号(;)代替REM命令,屏蔽DEVICE命令: ;device=c:\dos\ramdrive.sys 10.SET 显示,设置或删除MS-DOS环境变量。 使用环境变量可以控制某些批处理文件和程序的行为,可以控制MS-DOS显示与工 作的方式。一般在AUTOEXEC.BAT或CONFIG.SYS文件中用SET命令,以便每次启动计算 机时都自动设置环境变量。 语法 SET ] 使用以下语法显示当前环境设置: SET 参数 variable 指定要设置或修改的环境变量。 string 指定与环境变量相关的字符串。 相关命令 关于设置MS-DOS控制自身操作的环境变量的信息,可参阅命令、 命令、命令和命令。 SET─注解 显示当前环境设置 只键入无参数的SET命令就可显示当前环境设置。这些设置一般包括COMSPEC和 PATH环境变量,MS-DOS用它们帮助在磁盘上寻找程序。PROMPT、DIRCMD和COPYCMD为 MS-DOS使用的其它环境变量。关于DIRCMD更多的信息,请参阅命令。 使用参数 当使用SET指定了variable和string的值时,MS-DOS将指定变量及相关字符串加 到环境中。如果环境中已有该变量,则用新的字符串代替老的字符串。 如果在使用SET命令时指定了变量和等号(无字符串),则MS-DOS清除与此变量相 关的字符串(就象没有定义该环境变量一样)。 :m560a 在批处理文件中使用SET 在创建批处理文件时,可用SET命令创建环境变量。并将它们与%0到%9一样使用。 也可将变量%0到%9作为SET命令的输入。 :m560 在批处理文件中调用环境变量 从批处理文件中调用环境变量值时,必须用百分符(%)将变量值括起来。例如, 如果批处理文件创建了一个名为BAUD的环境变量,将%BAUD%插入到命令行,就可把与 BAUD相关的字符串作为可替换的参数使用。 :m560b SET对环境空间的影响 使用SET命令后,MS-DOS可能会显示以下信息: Out of environment space 该信息表明已没有环境变量空间容纳新的环境变量.关于怎样增加环境变量空间的 信息,请参阅命令。 使用 COPYCMD 环境 你可以设置COPYCMD环境变量,指定COPY, MOVE和XCOPY命令是否先给出提示,经 确认后再覆盖文件。 若强制要求COPY、MOVE和XCOPY命令在所有情况下均先给出提示,后进行覆盖, 就把COPYCMD环境变量设置成/-Y。若强制要求这些命令在所有情况下不提示就进行 覆盖,则把COPYCMD环境变量设置成/Y。 在这些命令中键入的/Y或/-Y开关,优先于COPYCMD环境变量的所有默认值和当前值。 SET─例子 要设置名为INCLUDE的变量,使它等于字符串C:\INC(C盘中的INC目录),可键入 以下命令: set include=c:\inc 在批处理文件可用%INCLUDE%代替C:\INC.例如,可在批处理文件中包括以下命 令,显示INCLUDE环境变量表示的目录内容: dir %include% 当MS-DOS处理该命令时,会用字符串C:\INC代替%INCLUDE%。 SET命令在批处理程序中的另一种用法是在PATH环境变量中加入新目录,例如: @echo off rem ADDPATH.BAT adds a new directory rem to the PATH environment variable。 set path=%1;%path% set 11.SHIFT 改变批处理程序中可替换参数的位置。 语法 SHIFT SHIFT─注解 SHIFT命令如何工作 SHIFT命令通过将每一个参数拷贝到前一个参数来改变可替换参数%0到%9的值。也 就是%1的值被拷贝到%0,%2的值被拷贝到%1等等。此命令对用一系列参数完成同样操作 的批处理文件很有用。 :m567 使用10个以上的命令行参数 使用SHIFT命令还可在批处理文件中接收多于10个的命令行参数。如果指定的命令 行参数超过10个,则在第10个参数(%9)之后出现的参数将依次被替换到(%9)。 替换参数的恢复 SHIFT命令不可逆。一旦执行了SHIFT命令,就不能恢复SHIFT 命令之前的第一个参 数(%0)。 SHIFT─例子 下面的批处理文件MYCOPY.BAT说明怎样用SHIFT命令处理任意多个命令行参数,将一 系列文件拷贝到一个指定的目录。使用的参数是目录名和后面的一系列文件名。 @echo off rem MYCOPY.BAT copies any number of files rem to a directory。 rem The command uses the following syntax: rem mycopy dir file1 file2 ... set todir=%1 :getfile shift if "%1"=="" goto end copy %1 %todir% goto getfile :end set todir= echo All done |
|
| 第4楼 十三 | 发表于 2004-07-08 00:00 |
| 初级用户 发帖 10 积分 143 | |
|
在问一下。
choice命令在DOS7.1下无用? |
|
| 第5楼 十三 | 发表于 2004-07-09 00:00 |
| 初级用户 发帖 10 积分 143 | |
|
是用不了。
版版来都我一下。我想用它用启动菜单。 谢谢了 |
|
| 第6楼 bush | 发表于 2004-07-09 00:00 |
| 银牌会员 发帖 730 积分 2,165 | |
|
choice外部命令,有这个程序才行
|
|
| 第7楼 十三 | 发表于 2004-07-09 00:00 |
| 初级用户 发帖 10 积分 143 | |
以下是引用bush在2004-7-9 上午 03:11:17的发言: 请问是什么程序? |
|
| 第8楼 linux1234 | 发表于 2004-07-13 00:00 |
| 中级用户 发帖 42 积分 293 | |
|
choice在dos7.10中就有
|
|
| 第9楼 十三 | 发表于 2004-07-13 00:00 |
| 初级用户 发帖 10 积分 143 | |
以下是引用linux1234在2004-7-13 上午 01:31:59的发言: 可这个命令在7.10下用不了啊??!! |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |