批处理各符号的功能:
1.
echo有两个状态一个是on 一个是off默认的是on 它的功能是显示当前文件的路径,如果不写on 或者是off的时候,默认情况下
1.
echo有两个状态一个是on 一个是off默认的是on 它的功能是显示当前文件的路径,如果不写on 或者是off的时候,默认情况下
是打开的即显当前文件的路径,加上off后,所有路径都不显示,但是echo off这行还能显出来,要让这行也消失的话就在它们前面
加一个@即@echo off,另外echo命令的另一种用法,可以直接编辑文本文件,例如:
echo netstat -an >a.bat结晶果是在当前目录下生成一个a.bat的文件,双击直接执行这个文件时,就会执行netstat -an这个命令
echo netstat -an >a.bat结晶果是在当前目录下生成一个a.bat的文件,双击直接执行这个文件时,就会执行netstat -an这个命令
。
2.
> 这个字符的意思是将">"前面的内容传递并且覆盖">"后面的内容,它所起的作用是将运行的回显结果传递到后面的范围.
> 这个字符的意思是将">"前面的内容传递并且覆盖">"后面的内容,它所起的作用是将运行的回显结果传递到后面的范围.
例如:中的内容是1113333,执行ipconfig /all &即将ipconfig /all的内容覆盖原有的1113333。与这个
符号相似的还有>>它的功能不是覆盖而追加,即将运行后的内容加到原来的1113333后。
3.
| 这是一个管道传输命令,意思是将上一命令执行的结果传到下一个命令去处理
例如:
dir c:\|find "txt"
以上命令是:查C:\所有,并发现TXT字符串。
| 这是一个管道传输命令,意思是将上一命令执行的结果传到下一个命令去处理
例如:
dir c:\|find "txt"
以上命令是:查C:\所有,并发现TXT字符串。
||
Usage:第一条命令 || 第二条命令 [|| 第三条命令...]
用这种方法可以同时执行多条命令,当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令
;(只要正确后面的就不执行)
bbs是什么意思
4.
^ 是对特殊符号"<",">","&"的前导字符,在命令中他将以上3个符号的特殊功能去掉,仅仅只把他们当成符号而不使用他们的特殊
^ 是对特殊符号"<",">","&"的前导字符,在命令中他将以上3个符号的特殊功能去掉,仅仅只把他们当成符号而不使用他们的特殊
意义。
例如:
C:\> ^>ipconfig
例如:
C:\> ^>ipconfig
结果为: >ipconfig没有追加只是显示出来而已
5.
& 这个符号允许在一行中使用2个以上不同的命令,当第一个命令执行失败了,也不影响后边的命令执行
& 这个符号允许在一行中使用2个以上不同的命令,当第一个命令执行失败了,也不影响后边的命令执行
例如:C:\>dir d:/p & dir e: /p & dir c: /p
结果是先后执行
结果是先后执行
6.
&& 这个命令和上边的类似,但区别是,第一个命令失败时,后边的命令也不会执行
例如:C:\>dir w:/p && dir e: /p && dir c: /p 由于电脑上没有w盘所以显示结果为:系统不到指定的路径。这样以来,后面的
例如:C:\>dir w:/p && dir e: /p && dir c: /p 由于电脑上没有w盘所以显示结果为:系统不到指定的路径。这样以来,后面的
两个盘就不执行啦。(当第n个命令失败时此命令后面的命令将不再执行,也就是说一直执行到失败为止)
7.
"" 双引号允许在字符串中包含空格,进入一个特殊目录可以用如下方法
7.
"" 双引号允许在字符串中包含空格,进入一个特殊目录可以用如下方法
cd "program files"
cd progra~1
cd pro*
cd progra~1
cd pro*
以上三种方法都可以进入program files这个目录
8.
, 逗号相当于空格,在某些情况下“,”可以用来当做空格使
, 逗号相当于空格,在某些情况下“,”可以用来当做空格使
比如
dir,c:\
9.
; 分号,当命令相同时,可以将不同目标用;来隔离,但执行效果不变,如执行过程中发生错误,则只返回错误报告,但程序还是
; 分号,当命令相同时,可以将不同目标用;来隔离,但执行效果不变,如执行过程中发生错误,则只返回错误报告,但程序还是
会执行。
比如:
dir c:\;d:\e:\;f:\
以上命令相当于
dir c:\
dir d:\
dir e:\
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.
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,另一种是rasdial adsl /d
11.goto一般和:是联用的goto跳转的地方入口就是":"。goto命令的另一种用法一:提前结束程序。在程序中间使用goto命令跳转到
某一标签,而这一标签的内容却定义为退出。如:
……
goto end
…
……
goto end
…
…
:end
:end
dir中有些命令是要牢记的
dir d: /s /p /b (/a这后面还有一些参数像h,r,d,s/d)具体的可以看帮助
%userprofile%在写批处理时这个相当于C:\Documents and Settings\Administrator
在结束关键进程的时候,要先结束这个进程,最好用系统自带的工具taskkill这个关的时候任何杀毒软件
都没有提示,但是如果换成了用ntsd关的话,卡巴斯基会报毒,而且这时的explorer会在关闭的一下后马上自启动,而taskkill就会
一直关着直到等你开启为止。
在使用for 的时候当用到 /d时,那是因为set中有* ?这两个通配符
shift
1.可替代参数的编号是%o-%9,如果要在一个命令行上使用超过10个可以被代换的参数,则可使用SHIFT命令来突破此限制。
2.每当执行sHIFT一次,命令行上的所有参数将向左移动一位。%1的内容将为%2的内容所取代…,%9内容则由新的参数取代。
3.%o表示批处理文件本身的名称,永远不变,所以每次执行时可以在批处理文件使用一次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
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个参数)
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 running
goto 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之间的任何整数,此语句检验结果都是真值。
在变量延迟时要用到setlocal EnableDelayedExpansion
例如:
@echo off
setlocal EnableDelayedExpansion
.......
然后写要用的代码
需要注意的是,一旦启用了变量延迟,就要用!号把变量括起来,而不能用%号。
echo !n!
显示变量n的值
显示变量n的值
例如:
@echo off &SETLOCAL ENABLEDELAYEDEXPANSION
set mm=gril&echo !mm!
pause
@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:~10,5%
%PATH:~-10%
%PATH:~0,-2%
%PATH:str1=str2%这个操作就是把变量%PATH%的里的str1全部用str2替换
例如:
@echo off
set a= bbs.verybat
echo 替换前的值: "%a%"
set var=%a: =qq%
echo 替换后的值: "%var%"
pause
@echo off
set a= bbs.verybat
echo 替换前的值: "%a%"
set var=%a: =qq%
echo 替换后的值: "%var%"
pause
结果是:替换前的值: " bbs.verybat" 很明显吧,那个空格被qq给代替啦^-^
替换后的值: "qqbbs.verybat"
替换后的值: "qqbbs.verybat"
请按任意键继续. . .
@echo off
set a=bbs.verybat
echo 替换前的值: "%a%"
set var=%a:.=伤脑筋%
echo 替换后的值: "%var%"
pause
解释set var=%a:.=伤脑筋%
set命令 var变量名 字a是要进行字符替换的变量的值,"."为要替换的值,
"伤脑筋"为替换后的值!
执行后就会把变量%a%里面的"."全部替换为"伤脑筋"
这就是set的替换字符的很好的功能!先讲到这
set命令 var变量名 字a是要进行字符替换的变量的值,"."为要替换的值,
"伤脑筋"为替换后的值!
执行后就会把变量%a%里面的"."全部替换为"伤脑筋"
这就是set的替换字符的很好的功能!先讲到这
%PATH:~10,5%
@echo off
set a=bbs.verybat
set var=%a:~1,2%
echo %var%
pause
set a=bbs.verybat
set var=%a:~1,2%
echo %var%
pause
执行后,我们会发现只显示了"bs"两个字母,我们的变量%a%的值不是为bbs.verybat吗
怎么只显示了第2个字母和第3个字母"bs",分析一结果我们就可以很容易看出
%PATH:~10,5%就是显示变量PATH里指定几位的值!
分析set var=%a:~1,2%
set命令 var变量值 a要进行字符操作的变量 "1"从变量"a"第几位下一位开始显示 "2"显示几位
和起来就是把变量a的值从第一位开始,把后两位赋予给变量var
怎么只显示了第2个字母和第3个字母"bs",分析一结果我们就可以很容易看出
%PATH:~10,5%就是显示变量PATH里指定几位的值!
分析set var=%a:~1,2%
set命令 var变量值 a要进行字符操作的变量 "1"从变量"a"第几位下一位开始显示 "2"显示几位
和起来就是把变量a的值从第一位开始,把后两位赋予给变量var
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论