批处理字符解释_第1页
批处理字符解释_第2页
批处理字符解释_第3页
批处理字符解释_第4页
批处理字符解释_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、使用多个命令和条件处理符号使用条件处理符号可以从单个命令行或脚本运行多个命令。通过条件处理符号运行多个命令时,条件处理符号右边的命令根据条件处理符号左边的命令结果来发挥作用。例如,只有在前一个命令失败的情况下,才可能需要运行一个新命令。或者,只有在前一个命令成功时才可能需要运行一个新命令。可以使用下表列出的特殊字符来传递多个命令。字符语法定义& .command1 & command2用来分隔一个命令行中的多个命令。Cmd.exe 运行第一个命令,然后运行第二个命令。&& .command1 && command2只有在符号 &&

2、 前面的命令成功时,才用于运行该符号后面的命令。Cmd.exe 运行第一个命令,然后只有在第一个命令运行成功时才运行第二个命令。| .command1 | command2只有在符号 | 前面的命令失败时,才用于运行符号 | 后面的命令。Cmd.exe 运行第一个命令,然后只有在第一个命令未能运行成功(接收到大于零的错误代码)时才运行第二个命令。( ) .(command1 & command2) 用来分组或嵌套多个命令。; 或者 ,command1 parameter1;parameter2用来分隔命令参数。 注意“与”符号 (&)、管道符号 (|) 以及括号 () 是特殊字

3、符,将它们作为参数传递时,必须在其前面加上转义字符 () 或引号。 如果某个命令成功完成操作,则该命令就返回零 (0) 退出代码或不返回任何退出代码。有关退出代码的详细信息,请参阅 Microsoft Windows Resource Kit。 嵌套命令行解释器通过在命令提示符打开 Cmd.exe 新的实例,可以在 Cmd.exe 内嵌套命令行解释器。默认情况下,Cmd.exe 的每个实例继承其父 Cmd.exe 应用程序的环境。通过嵌套 Cmd.exe 的实例,可以更改本地环境,而不会影响 Cmd.exe 的父应用程序。这使您能够保留 Cmd.exe 的原始环境,并在终止嵌套的命令行解释器之

4、后返回到原始环境。但是在嵌套的命令行解释器中所作的更改将不会被保存。要嵌套命令行解释器,请在命令提示符下键入: cmd显示类似于下面内容的消息:Microsoft (R) Windows XP (TM)(C) Copyright 1985-2001 Microsoft Corp. 要关闭嵌套的命令行解释器,请键入 exit。使用 setlocal 和 endlocal 命令,甚至可以在 Cmd.exe 的实例中(或在脚本中)进一步将更改本地化。Setlocal 创建本地作用范围,而 endlocal 终止本地作用范围。在 setlocal 和 endlocal 作用范围内所作的更改将会被放弃,

5、从而保持未更改的原始环境。可以将这两个命令嵌套到最高 32 级。有关 setlocal 和 endlocal 命令的详细信息,请参阅 Setlocal 和 Endlocal。将环境变量与 Cmd.exe 一起使用Cmd.exe 命令行解释器环境由确定命令行解释器和操作系统的行为的变量进行定义。可以使用两种类型的环境变量(系统和本地)来定义命令行解释器环境或整个操作系统环境的行为。系统环境变量定义全局操作系统环境的行为。本地环境变量定义 Cmd.exe 当前实例的环境的行为。系统环境变量存在于操作系统之中,并可用于所有 Windows XP 进程。只有具有管理特权的用户才可以更改系统变量。这些变

6、量最常用于登录脚本。只有在为其创建了本地环境变量的用户登录到计算机时,这些本地环境变量才有效。HKEY_CURRENT_USER 配置单元 中设置的本地变量只对当前用户有效,但它们可定义全局操作系统环境的行为。下表按降序顺序描述各种类型的变量:1.内置系统变量 2.在 HKEY_LOCAL_MACHINE 配置单元中找到的系统变量 3.在 HKEY_CURRENT_USER 配置单元中找到的局部变量 4.在 Autoexec.bat 文件中设置的所有环境变量和路径 5.在登录脚本(如果有的话)中设置的所有环境变量 6.在脚本和批处理文件中交互使用的变量 在命令行解释器中,Cmd.exe 的每个

7、实例都继承其父应用程序的环境。因此,可以在不影响父应用程序环境的情况下更改新的 Cmd.exe 环境中的变量。下表列出 Windows XP 的系统和局部环境变量。变量类型说明%ALLUSERSPROFILE%局部返回所有“用户配置文件”的位置。%APPDATA%局部返回默认情况下应用程序存储数据的位置。%CD%局部返回当前目录字符串。%CMDCMDLINE%局部返回用来启动当前的 Cmd.exe 的准确命令行。%CMDEXTVERSION%系统返回当前的“命令处理程序扩展”的版本号。%COMPUTERNAME% 系统返回计算机的名称。%COMSPEC% 系统返回命令行解释器可执行程序的准确路

8、径。%DATE% 系统返回当前日期。使用与 date /t 命令相同的格式。由 Cmd.exe 生成。有关 date 命令的详细信息,请参阅 Date。%ERRORLEVEL% 系统返回最近使用过的命令的错误代码。通常用非零值表示错误。%HOMEDRIVE% 系统返回连接到用户主目录的本地工作站驱动器号。基于主目录值的设置。用户主目录是在“本地用户和组”中指定的。%HOMEPATH% 系统返回用户主目录的完整路径。基于主目录值的设置。用户主目录是在“本地用户和组”中指定的。%HOMESHARE% 系统返回用户的共享主目录的网络路径。基于主目录值的设置。用户主目录是在“本地用户和组”中指定的。%

9、LOGONSEVER% 局部返回验证当前登录会话的域控制器的名称。%NUMBER_OF_PROCESSORS% 系统指定安装在计算机上的处理器的数目。%OS% 系统返回操作系统的名称。Windows 2000 将操作系统显示为 Windows_NT。%PATH%系统指定可执行文件的搜索路径。%PATHEXT%系统返回操作系统认为可执行的文件扩展名的列表。%PROCESSOR_ARCHITECTURE% 系统返回处理器的芯片体系结构。值: x86,IA64。%PROCESSOR_IDENTFIER%系统返回处理器说明。%PROCESSOR_LEVEL% 系统返回计算机上安装的处理器的型号。%PR

10、OCESSOR_LEVEL%系统返回处理器的版本号。%PROMPT%局部返回当前解释程序的命令提示符设置。由 Cmd.exe 生成。%RANDOM%系统返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成。%SYSTEMDRIVE%系统返回包含 Windows XP 根目录(即系统根目录)的驱动器。%SYSTEMROOT% 系统返回 Windows XP 根目录的位置。%TEMP% and %TMP%系统和用户返回对当前登录用户可用的应用程序所使用的默认临时目录。有些应用程序需要 TEMP,而其它应用程序则需要 TMP。%TIME%系统返回当前时间。使用与 time /t

11、命令相同的格式。由 Cmd.exe 生成。有关 time 命令的详细信息,请参阅 Time。%USERDOMAIN%局部返回包含用户帐户的域的名称。%USERNAME%局部返回当前登录的用户的名称。%UserPrefix%局部返回当前用户的配置文件的位置。%WINDIR%系统返回操作系统目录的位置。设置环境变量使用 set 命令创建、更改、删除或显示环境变量。set 命令只更改当前解释器环境中的变量。要查看变量,请在命令提示符下键入:set all要添加变量,请在命令提示符下键入:set variablename=value要删除变量,请在命令提示符下键入:set nod2可以将大多数字符用作

12、变量值,其中包括空格。如果使用特殊字符 <、>、|、& 或 ,则必须在它们前面加上转义字符 () 或引号。如果使用引号,则必须将引号作为值的组成部分,因为等号后面的任何内容都会被视为值。请考虑下列范例:?要创建变量值 new&name,请键入: set varname=new&name?要创建变量值 "new&name",请键入: set varname="new&name"?如果在命令提示符下键入 set varname=new&name,就会出现与下面内容类似的错误消息: "

13、9;name' is not recognized as an internal or external command, operable program or batch file."变量名不区分大小写。但是,set 显示的变量与您键入的完全相同。可以在变量名中结合使用大写字母和小写字母,这样可以使代码更具有可读性(例如, UserName)。 注意?最大单个环境变量大小为 8192 字节。 ?所有变量的最大环境变量的总和大小(包括变量名和等号)为 65,536 KB。 使用命令重定向操作符 (Redirection Operators)可以使用重定向操作符将命令输入和输

14、出数据流从默认位置重定向到不同的位置。输入或输出数据流的位置即为句柄。下表列出了可用于将命令输入和输出数据流进行重定向的操作符。重定向操作符说明>将命令输出写入到文件或设备(例如打印机)中,而不是写在命令提示符窗口中。<从文件中而不是从键盘中读入命令输入。>>将命令输出添加到文件末尾而不删除文件中的信息。>&将一个句柄的输出写入到另一个句柄的输入中。<&从一个句柄读取输入并将其写入到另一个句柄输出中。|从一个命令中读取输出并将其写入另一个命令的输入中。也称作管道。默认情况下,可以从键盘将命令输入(即 STDIN 句柄)发送到 Cmd.exe,

15、然后由 Cmd.exe 将命令输出(即 STDOUT 句柄)发送到命令提示符窗口。下表将列出可用的句柄。句柄句柄的数字代号说明STDIN0键盘输入STDOUT1输出到命令提示符窗口STDERR2错误输出到命令提示符窗口UNDEFINED3-9这些句柄由应用程序和各个具体工具单独定义。数字 0 到 9 代表前 10 个句柄。可以使用命令 Cmd.exe 运行程序并将前 10 个句柄中的任何一个重定向到该程序。要指定想使用的句柄,可在重定向操作符前面键入该句柄的数字。如果未定义句柄,则默认的 < 重定向输入操作符是 0,而默认的 > 重定向输出操作符是 1。键入 > 或 <

16、 操作符之后,必须指定要读取或写入数据的位置。可以指定文件名或另一个现有的句柄。要指定重定向到现有句柄,请使用与 (&) 字符,后面接要重定向的句柄号(例如 &句柄#)。例如,下面的命令可以将句柄 2(即 STDERR)重定向到句柄 1(即 STDOUT):1<&2复制句柄 重定向操作符 & 可以将输出或输入从一个句柄复制到另一个指定的句柄。例如,要将 dir 输出发送到 File.txt 并将错误输出发送到 File.txt,请键入:dir>c:file.txt 2>&1复制句柄时,可以复制该句柄原状态的所有特性。例如,如果一个句柄具

17、有只读访问的属性,则该句柄的所有副本都具有只读访问属性。不能将一个具有只读访问属性的句柄复制为另一个具有只写访问属性的句柄。重定向命令输出 (<)要从键盘或设备重定向命令输出,请使用 < 操作符。例如,要从 File.txt 得到 sort 命令的命令输入,请键入: sort<file.txt File.txt 的内容将以字母顺序列表的方式显示在命令提示符窗口中。< 操作符可以打开具有只读访问的指定文件名。所以,不能使用该操作符向文件中写入信息。例如,如果以 <&2 启动程序,则所有试图读取句柄 0 的操作都将失败,因为句柄 2 最初是以只读访问打开的。

18、注意?0 是 < 重定向输入操作符 > 的默认句柄。 重定向命令输出 (>)几乎所有的命令都将输出发送到命令提示符窗口。即使将输出发送到驱动器或打印机的命令也会在命令提示符窗口显示消息和提示。要将命令输出从命令提示符窗口重定向到文件或设备,请使用 > 操作符。可以在许多命令中使用该操作符。例如,要将 dir 输出重定向到 Dirlist.txt,请键入: dir>dirlist.txt 如果 Dirlist.txt 不存在,Cmd.exe 将创建该文件。如果 Dirlist.txt 存在,Cmd.exe 将使用 dir 命令的输出替换文件中的信息。要运行 nets

19、h routing dump 命令,然后将命令输出发送到 Route.cfg,请键入:netsh routing dump>c:route.cfg> 操作符可以打开具有只写访问属性的指定文件。所以,不能使用该操作符读取文件。例如,如果使用重定向 >&0 启动程序,则所有试图写入句柄 1 的操作都将失败,因为句柄 0 最初是以只读访问大开的。 注意?1 是 > 重定向输出操作符的默认句柄。 使用 <& 操作符重定向输入和复制要使用重定向输入操作符 <&,指定的文件必须已经存在。如果输入文件存在,Cmd.exe 将以只读方式打开该文件,然

20、后将文件中作为输入的字符发送到此命令(如同从键盘输入一样)。如果指定了句柄,Cmd.exe 将指定的句柄复制到系统现有的句柄中。例如,要以句柄 0 输入读取(即 STDIN)的方式打开 File.txt,请键入:<file.txt要打开 File.txt,并在内容分类后将输出发送到命令提示符窗口(即 STDOUT),请键入:sort<file.txt 要查找 File.txt,然后将句柄 1(即 STDOUT)和句柄 2(即 STDERR)重定向到 Search.txt,请键入:findfile file.txt>search.txt 2<&1要以句柄 0 输入

21、读取(即 STDIN)的方式复制用户定义句柄 3,请键入:<&3使用 >& 操作符重定向输出和复制如果将输出重定向到文件且指定了现有的文件名,Cmd.exe 将以只写方式打开文件并覆盖该文件内容。如果指定了句柄,Cmd.exe 将文件复制到现有句柄中。要将用户定义句柄 3 复制到句柄 1,请键入:>&3要将包括句柄 2(即 STDERR)的所有输出从 ipconfig 命令重定向到句柄 1(即 STDOUT),然后将输出重定向到 Output.log,请键入:ipconfig.exe>>output.log 2>&1使用 &g

22、t;> 重定向操作符追加输出要从命令中将输出添加到文件末尾而不丢失文件中已存在的任何信息,请使用两个连续的大于号(即 >>)。例如,下面的命令可以将由 dir 命令生成的目录列表追加到 Dirlist.txt 文件: dir>>dirlist.txt 要将 netstat 命令的输出追加到 Tcpinfo.txt 的末尾,请键入:netstat>>tcpinfo.txt使用管道操作符 (|) 管道操作符 (|) 可以提取一个命令的输出(默认情况下是 STDOUT),然后将其导入另一个命令的输入中(默认情况下是 STDIN)。例如,下面的命令将对目录分类

23、:dir | sort在本例中,将同时启动两个命令,但随后 sort 命令会暂停,直到它接收到 dir 命令的输出为止。sort 命令使用 dir 命令的输出作为输入,然后将输出发送到句柄 1(即 STDOUT)。合并带重定向操作符的命令可以通过合并带有其它命令和文件名的筛选器命令创建自定义命令。例如,可以使用以下命令存储包含“LOG”字符串的文件名: dir /b | find "LOG" > loglist.txt dir 命令的输出通过 find 筛选器命令发送。包含字符串 "LOG" 的文件名作为文件名列表(例如,NetshConfig.l

24、og、Logdat.svd 和 Mylog.bat)存储在文件 Loglist.txt 中。 要在相同命令中使用多个筛选器,请使用管道 (|) 分隔筛选器。例如,下面的命令将搜索 C 盘上的每个目录以查找包含 "LOG" 字符串的文件名,并且在命令提示符窗口中每次显示一屏:dir c: /s /b | find "LOG" | more 利用管道 (|) 可以将 Cmd.exe 导向为通过 find 筛选器命令发送 dir 命令输出。find 命令只选择包含字符串 "LOG" 的文件名。more 命令可以显示由 find 命令选择的文

25、件名(在命令提示符窗口中每次显示一屏)。有关筛选器命令的详细信息使用筛选器与命令重新定向管道符 (|) 联合使用,命令筛选器是这样一个命令,该命令包含在可读取命令的输入、可转换输入并写入输出的命令里。筛选器命令可以帮助您排序、查看和选择部分命令输出。筛选器命令可以划分、重排以及提取通过的部分信息操作。下表列出 Windows XP 中可用的筛选器命令。命令说明more在一个命令提示符窗口中每次显示一个文件的内容或一个命令的输出。find在文件和命令输出中搜索您所指定的字符。sort按字母顺序排列文件和命令输出。要将输入从文件发送到筛选器命令,请使用小于号 (<)。如果要使筛选器命令从其它

26、命令获得输入,请使用管道 (|)。使用 more 命令more 命令在一个命令提示符窗口中每次显示一个文件的内容或一个命令的输出。例如,要在一个命令提示窗口中每次显示一个名为 List.txt 的文件的内容,请键入: more < list.txt 出现一个包含信息的命令提示符窗口,然后在命令提示符窗口底部出现 - More - 提示。要继续前进到下一个命令提示符窗口,请在键盘上按任意键(除 PAUSE 之外)。要停止命令且不查看详细信息,请按 CTRL+C 键。使用产生多个输出命令提示符窗口的命令时,可以使用 more 命令。例如,假定要查看硬盘上的目录树。如果命令提示符窗口不能将目录

27、在一屏内全部显示出来,请使用带管道 (|) 和 more 命令的 tree 命令,如下例所示: tree c: | more 出现由 tree 命令产生的第一个输出命令提示符窗口,后面跟着 - More - 提示。输出暂停,直到用户按键盘上的任意键为止(PAUSE 键除外)。使用 find 命令find 命令在文件中搜索指定的字符串或文字。Cmd.exe 显示与在命令提示符窗口中指定的字符串或文字相匹配的所有行。可以把 find 命令用作筛选器命令,也可以用作标准的 Windows XP 命令。有关如何将 find 用作标准命令的详细信息,请参阅 Find。要将 find 命令用作筛选器命令,

28、必须将小于号 (<) 和要搜索的字符串或文本包括在内。默认情况下,find 搜索将区分大小写。例如,下面的命令查找文件 Trade.txt 中所有的“Pacific Rim”字符串: find "Pacific Rim" < trade.txt 输出不包括出现“pacific rim”的任何字符串。输出只包括所有首字母大写的“Pacific Rim”字符串。要保存 find 命令的输出而不是在命令提示符窗口显示输出,请键入大于号 (>) 和要存储输出的文件的名称。例如,下面的命令查找文件 Trade.txt 中存在的“Pacific Rim”字符串,并将结

29、果保存在 Nwtrade.txt 文件中: find "Pacific Rim" < trade.txt > nwtrade.txt 使用 sort 命令sort 命令按字母顺序排列文本文件或命令的输出。例如,下列命令对名为 List.txt 的文件的内容进行排序,并在命令提示符窗口中显示排序结果: sort < list.txt 在此范例中,sort 命令对 List.txt 文件的行按字母列表进行排序并显示结果,但不更改文件。要保存 sort 命令的输出而不是显示输出,请键入大于号 (>) 和文件名。例如,以下命令对 List.txt 文件的行按

30、字母顺序排序,并将结果存储到 Alphlist.txt 文件中: sort < list.txt > alphlist.txt 要对命令输出进行排序,请键入该命令,键入管道 (|),然后键入 sort(即,command | sort)。例如,下列命令对包括字符串“Jones”(即,find 命令输出)的行按字母顺序进行排序: find "Jones" maillst.txt | sort Set显示、设置或删除环境变量。如果没有任何参数,set 命令将显示当前环境设置。语法set /a expression /p variable= string参数/a 将

31、string 设置成可求值的数字表达式。 /p 将 variable 的值设置成输入行。 variable 指定需要设置或修改的变量。 string 指定要与指定变量关联的字符串。 /? 在命令提示符显示帮助。 注释?使用“恢复控制台”中的 set set 命令具有不同的参数,可从“恢复控制台”中获得。?使用特殊字符 字符 < > | & 是特殊命令外壳字符,在字符串中使用时必须位于 escape 字符 () 之前或用引号引起来(即,"StringContaining&Symbol")。如果要使用引号将含有特殊字符的字符串引起来,则该引号将被设置

32、成环境变量值的一部分。?使用环境变量 使用环境变量可控制某些批处理文件和程序的操作,并可控制 Windows XP 和 MS-DOS 子系统显示和工作的方式。Autoexec.nt 文件中经常使用 set 命令设置环境变量。?显示当前的环境设置 当只键入 set 命令时,将显示当前的环境设置。这些设置通常包含用来帮助查找磁盘上程序的 COMSPEC 和 PATH 环境变量。Windows XP 使用的两个其它环境变量是 PROMPT 和 DIRCMD。?使用参数 当指定变量和字符串的值时,指定的变量值将被添加到该环境,而且该字符串与该变量关联。如果环境中已经存在该变量,新的字符串值将替代旧的字

33、符串值。如果只为 set 命令指定一个变量和一个等号(没有字符串),则与该变量关联的字符串值将被清除(就象变量根本不存在一样)。?使用 /a 下表按优先性从高到低的顺序列出了支持 /a 的运算符。运算符执行的操作< >分组* / % + -算法<< >>逻辑移位&按位“和”运算按位“异或”运算|按位“或”运算= *= /= %= += -= &= = |= <<= >>=分配,表达式分隔符如果使用逻辑 (&& |) 或模 (%) 运算符,请使用引号将表达式字符串引起来。表达式中的非数字字符串将被视为环境

34、变量名,其值将转化成数字然后才进行处理。如果指定当前环境中没有定义的环境变量名,将会分配零值,允许您对环境变量进行算术运算,而不需要使用 % 找回值。如果从命令脚本外的命令行中运行 set /a,则会显示该表达式的最终值。数值是指十进制的数字,在前缀加 0× 则表示十六进制数字,加 0 则表示八进制数字。因此,0×2 与 18 相同,也与 022 相同,八进制表示法容易引起混淆。例如,08 和 09 不是有效数字,因为 8 和 9 不是有效的八进制数字。?使用 /p 要求有提示字符串。?支持延迟的环境变量扩展 已经添加延迟的环境变量扩展支持。默认情况下禁用该支持,不过可使用 cmd /v 对其启用或禁用。?使用命令扩展 当启用命令扩展(默认)并单独运行 set 时,将显

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论