bat脚本参数 if goto choice for使用的学习笔记。

写过几次bat脚本,但一直没有总结,最近找到一个网页介绍bat,总结得很好,转自 http://www.jb51.net/article/49627.htm:

本文只总结我不会的,全面的看原网页就可以了。

1 参数

'%':参数符,%[1-9]表示参数,多个参数要用空格或tab隔开。变量可以从%0到%9,%0表示批处理命令本身,其它参数字符串用%1到%9顺序表示

  1. 例3:C:根目录下一批处理文件名为t.bat,内容为: @echo off type %1 type %2
  2. 那么运行C:\>t a.txt b.txt %1 : 表示a.txt %2 : 表示b.txt 于是上面的命令将顺序地显示a.txt和b.txt文件的内容。

2 if

1. if [not] "参数" == "字符串" 待执行的命令

例:if "%1"=="a" format a:

2. if [not] exist [路径\]文件名 待执行的命令

例: if exist c:\config.sys type c:\config.sys
表示如果存在c:\config.sys文件,则显示它的内容。

3. if errorlevel <数字> 待执行的命令 (这个命令挺有意思的,所以多写点。)

很DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果,通过if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令(返回值必须按照从大到小的顺序排列)。

例:if errorlevel 2 goto x2。

以下就是几个常用命令的返回值及其代表的意义:

backup    0 备份成功 1 未找到备份文件 2 文件共享冲突阻止备份完成 3 用户用ctrl-c中止备份 4 由于致命的错误使备份操作中止

diskcomp 0 盘比较相同 1 盘比较不同 2 用户通过ctrl-c中止比较操作 3 由于致命的错误使比较操作中止 4 预置错误中止比较

diskcopy  0 盘拷贝操作成功 1 非致命盘读/写错 2 用户通过ctrl-c结束拷贝操作 3 因致命的处理错误使盘拷贝中止 4 预置错误阻止拷贝操作

format     0 格式化成功 3 用户通过ctrl-c中止格式化处理 4 因致命的处理错误使格式化中止 5 在提示“proceed with format(y/n)?”下用户键入n结束

xcopy      0 成功拷贝文件 1 未找到拷贝文件 2 用户通过ctrl-c中止拷贝操作 4 预置错误阻止文件拷贝操作 5 拷贝过程中写盘错误

3 goto 这个经常看到,不需要多解释:

例:goto end

:end echo this is the end

标号用“:字符串”来定义,标号所在行不被执行。

4 choice 使用此命令可以让用户输入一个字符(用于选择),与if errorlevel配合使用。

注意:choice命令为DOS或者Windows系统提供的外部命令,不同版本的choice命令语法会稍有不同,请用choice /?查看用法。

示例:
   CHOICE /?
   CHOICE /C YNC /M "确认请按 Y,否请按 N,或者取消请按 C。"
   CHOICE /T 10 /C ync /CS /D y :10秒超时,有y n c三个选项,默认选y。
   CHOICE /C ab /M "选项 1 请选择 a,选项 2 请选择 b。" : 提供a b两个选项,带上一条文本。 
   CHOICE /C ab /N /M "选项 1 请选择 a,选项 2 请选择 b。":功能同上,但在提示符中隐藏选项列表。

例:test.bat的内容如下(注意,用if errorlevel判断返回值时,要按返回值从高到低排列): @echo off choice /C dme /M "defrag,mem,end" if errorlevel 3 goto end if errorlevel 2 goto mem if errotlevel 1 goto defrag

:defrag c:\dos\defrag goto end

:mem mem goto end

:end echo good bye

5 for 这个用法有点特别,还有不明白的地方,还需要理解:

语法: 对一组文件中的每一个文件执行某个特定命令。

FOR %%variable IN (set) DO command [command-parameters]

%%variable   指定一个单一字母可替换的参数。 (set)       指定一个或一组文件。可以使用通配符。 command     指定对每个文件执行的命令。 command-parameters              为特定命令指定参数或命令行开关。

例如一个批处理文件中有一行: for %%c in (*.bat *.txt) do type %%c

则该命令行会显示当前目录下所有以bat和txt为扩展名的文件的内容。

上一篇:rsyslog+loganalyzer配置


下一篇:基于Bootstrap的JQuery TreeView树形控件,数据支持json字符串、list集合(MVC5)<二>