批处理各符号的功能

批处理各符号的功能:

1.

echo有两个状态一个是on 一个是off默认的是on 它的功能是显示当前文件的路径,如果不写on 或者是off的时候,默认情况下

是打开的即显当前文件的路径,加上off后,所有路径都不显示,但是echo off这行还能显出来,要让这行也消失的话就在它们前面

加一个@即@echo off,另外echo命令的另一种用法,可以直接编辑文本文件,例如:

echo netstat -an >a.bat结晶果是在当前目录下生成一个a.bat的文件,双击直接执行这个文件时,就会执行netstat -an这个命令

2.

> 这个字符的意思是将">"前面的内容传递并且覆盖">"后面的内容,它所起的作用是将运行的回显结果传递到后面的范围.例如:ipconfig.txt中的内容是1113333,执行ipconfig /all >ipconfig.txt即将ipconfig /all的内容覆盖原有的1113333。与这个

符号相似的还有>>它的功能不是覆盖而追加,即将运行后的内容加到原来的1113333后。

3.

| 这是一个管道传输命令,意思是将上一命令执行的结果传到下一个命令去处理例如:

dir c:\|find "txt"以上命令是:查找C:\所有,并发现TXT 字符串。

||

Usage:第一条命令|| 第二条命令[|| 第三条命令...] 用这种方法可以同时执行多条命令,当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令

;(只要正确后面的就不执行)

4.

^ 是对特殊符号"<",">","&"的前导字符,在命令中他将以上3个符号的特殊功能去掉,仅仅只把他们当成符号而不使用他们的特殊

意义。例如:

C:\>echo ipconfig.txt ^>ipconfig

结果为:ipconfig.txt >ipconfig没有追加只是显示出来而已5.

& 这个符号允许在一行中使用2个以上不同的命令,当

第一个命令执行失败了,也不影响后边的命令执行

例如:C:\>dir d:/p & dir e: /p & dir c: /p结果是先后执

6.

&& 这个命令和上边的类似,但区别是,第一个命令失败时,后边的命令也不会执行例如:C:\>dir w:/p && dir e: /p && dir c: /p 由于电脑上没有w盘所以显示结果为:

系统找不到指定的路径。这样以来,后面的

两个盘就不执行啦。(当第n个命令失败时此命令后面的

命令将不再执行,也就是说一直执行到失败为止)

7.

"" 双引号允许在字符串中包含空格,进入一个特殊目录

可以用如下方法

cd "program files"cd progra~1cd pro*

以上三种方法都可以进入program files这个目录

8.

, 逗号相当于空格,在某些情况下“,”可以用来当做空格使比如

dir,c:\

9.

; 分号,当命令相同时,可以将不同目标用;来隔离,但执行效果不变,如执行过程中发生错误,则只返回错误报告,但程序还是

会执行。

比如:

dir c:\;d:\e:\;f:\

以上命令相当于

dir c:\

dir d:\

dir e:\

dir f:\但是前面执行的盘不存在的话,后面的命令将不会执行。

例如:C:\>dir w:;d: /p;e: /p结果为:系统找不到指定的路径。

10.在echo的后面加一个点,所起到的作用是显示一空行。以下范例显示的批处理程序包含前后各有一个空行的三

行消息:

@echo off

echo. echo This batch program

echo formats and checks

echo new disks

echo.

如果想让打开的批处理命令的标题栏有名字的话可以用

到title这个参数

title filename

">nul 2>nul"可以屏蔽一切屏幕的输出,例如:dir >nul 2>nul这样屏幕上什么都不会输出,也就是没有结果。1>nul表示将正确执行目录树的信息禁止输出,2>nul表示将执行过程中的错误信息禁止输出。

断开网络连接方法有两种:一种是rasphone /h adsl,另一种是rasdialadsl /d

11.goto一般和:是联用的goto跳转的地方入口就是":"。goto命令的另一种用法一:提前结束程序。在程序中间

使用goto命令跳转到

某一标签,而这一标签的内容却定义为退出。如:……goto end

……:end

dir中有些命令是要牢记的

dir d: /s /p /b (/a这后面还有一些参数像h,r,d,s/d)具体

的可以看帮助

%userprofile%在写批处理时这个相当于C:\Documents and Settings\Administrator

在结束关键进程的时候,要先结束explorer.exe这个进程,最好用系统自带的工具taskkill这个关explorer.exe的时

候任何杀毒软件

都没有提示,但是如果换成了用ntsd关的话,卡巴斯基

会报毒,而且这时的explorer会在关闭的一下后马上自

启动,而taskkill就会

一直关着直到等你开启为止。

在使用for 的时候当用到/d时,那是因为set中有* ?这两个通配符

shift

1.可替代参数的编号是%o-%9,如果要在一个命令行上

使用超过10个可以被代换的参数,则可使用SHIFT命令来突破此限制。

2.每当执行sHIFT一次,命令行上的所有参数将向左移动一位。%1的内容将为%2的内容所取代…,%9内容则

由新的参数取代。

3.%o表示批处理文件本身的名称,永远不变,所以每次执行时可以在批处理文件使用一次shift就向右移动一位,例如:

a.bat的内容:

@echo %1 %2 %3 %4 %5 %6 %7 %8 %9

shift

@echo %1 %2 %3 %4 %5 %6 %7 %8 %9

shift

@echo %1 %2 %3 %4 %5 %6 %7 %8 %9

pause

运行

c:\>a 1 2 3 4 5 6 7 8 9 10 11(其后有11个参数)

1 2 3 4 5 6 7 8 9 (取到最前面9个参数)

c:\>shift (移位)

2 3 4 5 6 7 8 9 10 11(取到另外9个参数)

c:\>shift (移位)

3 4 5 6 7 8 9 10 (取到另外9个参数)

在批处理中del /f /s /q可以删除指定目录下的任何文件,但是不能删除文件夹,rd /s /q不但可以删除指定目录下的文件夹而且还

可以删除目录下的所有文件,以前总是以为rd只能删除文件夹,现在才知道用这个命令还以删除文件夹

@echo off @echo off

:top :top

if (%1)==() goto end if (%1)==()goto end

shift shift

echo still running echo still runninggoto top goto top

:end :end

看到了吧!两个程序就是第三行的goto前面不一样,第一个有一个空格,而第二个没有,就是这个空格所产生的结果就不一样,第一

个结果是三行still running,而第二个结果是一个无限制的循环,一直不停的显示still running,所以写程序的时候一定要注意

errorlevel若一个程序或DOS命令执行成功,则返回的E 只RORLEVEL的值为o,否则为1至255之间AscII值的任意整数,其值只占一个字节约内存

空间,值得注意的是IF语句中检验的ERRORLEVEL值是大于或等于而不是等于,例如语句IF ERRORLEVEL 5检验的是ERRORLEVEL>=5而

不是ERRORLEVEL=5,因此对于5至255之间的任何整数,此语句检验结果都是真值。

在变量延迟时要用到setlocalEnableDelayedExpansion例

如:

@echo offsetlocalEnableDelayedExpansion .......然后写要用的代码

需要注意的是,一旦启用了变量延迟,就要用!号把变量括起来,而不能用%号。

echo !n!显示变量n的值

例如:

@echo off &SETLOCAL ENABLEDELAYEDEXPANSION set mm=gril&echo !mm!pause

ping 在批处理中有延时的作用,开始的时候不知道怎么用,后来才发现,每ping一次的时间是一秒,所以写成ping /n 10 127.1或者

是ping /n 10 localhost效果是一样的,都能起来延时十秒的作用

set

SET /A expression环境变量替换已如下增强:

%PATH:str1=str2%

%PATH:~10,5%%PATH:~-10%

%PATH:~0,-2%

%PATH:str1=str2%这个操作就是把变量%PATH%的里的str1全部用str2替换

例如:

@echo off

set a=

echo 替换前的值: "%a%"

set var=%a: =qq%

echo 替换后的值: "%var%"pause

结果是:替换前的值: " " 很明显吧,那个空格被qq给代替啦^-^替换后的值: ""请按任意键继续. . .

@echo off

set a=

echo 替换前的值: "%a%"

set var=%a:.=伤脑筋%

echo 替换后的值: "%var%"

pause

解释set var=%a:.=伤脑筋%

set命令var变量名字a是要进行字符替换的变量的值,"."为要替换的值,

"伤脑筋"为替换后的值!执行后就会把变量%a%里面的"."全部替换为"伤脑筋"这就是set的替换字符的很好的功能!先讲到这%PATH:~10,5%

@echo off

set a=

set var=%a:~1,2%

echo %var%

pause

执行后,我们会发现只显示了"bs"两个字母,我们的变

量%a%的值不是为"bs",分析一结果我们就可以很容易看出

%PATH:~10,5%就是显示变量PATH里指定几位的值!分析set var=%a:~1,2%

set命令var变量值a要进行字符操作的变量"1"从变量"a"第几位下一位开始显示"2"显示几位和起来就是把变量a的值从第一位开始,把后两位赋予给变量var

%PATH:~-10% 例子

@echo off

set a=

set var=%a:~-3%

echo %var%

pause

这个的意思是从右往左取三位,把取到的部分给了var ,如果把负号去掉,就成了从左往右去掉三位把剩下的部分给了var

%PATH:~0,-2% 例子

@echo off

set a=

set var=%a:~4,-3%

echo %var%

pause

结果是verybat,这段代码的意思是,从右去掉三位,把左剩余的部分,从第四位的下一位开始显示,把显示的内容给了var

如果改成set var=%a:~3,-3%结果就是.verybat

延迟和set的综合应用:

@echo off setlocalenabledelayedexpansion

title I Love Greatwall

set love=I Love Greatwall Forever

for /l %%i in (1,1,24) do (cls

echo. !love:~0,%%i!

ping/n 1 127.1>nul 2>nul)

pause

相关文档
最新文档