-
批处理各符号的功能:
1.
echo
有两个状态一个是
on
p>
一个是
off
默认的是
on
它的
功能是显示当前文件的路径,如果不写
on
或者是
off
的
时候,默认情况下
是打开的即显当前
文件的路径,加上
off
后,所有路径都
不显示,
但是
echo off
这行
还能显出来,
要让这行也消失
的话就在它们前面
加一个
@
即
@echo off,
另外
echo
< br>命令的另一种用法,可
以直接编辑文本文件,例如:
echo netstat -an >
结晶果是在当前目录下
生成一个
的文件,
双击直接执行这个文
件时,
就会执行
netstat
-an
这个命令
。
2.
>
这个字符的意思是将
前面的内容传递并
且覆盖
后面的内容,
它所起的作用是将
运行的回显结果传递到后
面的范围
.
例如:
中的内容是
1113333
p>
,执行
ipconfig
/all
>
即将
ipconfig /all
的
内容覆盖原有的
1113333
。与这个
符号相似的还有
>>
它的功能不是
覆盖而追加,即将运行
后的内容加到原来的
1113333
p>
后。
3.
|
这是一个管道传输命令,
意思是将上一命令执行的结果
传到下一个命令去处理
例如:
dir c:|find <
/p>
以上命令是:查找
C
:
< br>
所有,并发现
TXT
字符串。<
/p>
||
Usage
:第一条命令
||
第二条命令
[||
第三条命令
...]
用这种方法可以同时执行多条命令,
当碰到执行正确的命
令后将不执行后面的命令,
如果没有出现正确的命令则一
直执行完所有命令
;
(
只要正确后面的就不执行
)
4.
^
是对特殊符号
的前导字符,在命令中他将
以上
3
个符号的特殊功能去掉,
仅仅只把他们当成符号而
不使用他们的
特殊
意义。
例如:
C:>echo
^>ipconfig
结果为:
>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.
p>
双引号允许在字符串中包含空格,进入一个特殊目录
可以用如下方法
cd
cd progra~1
cd pro*
以上三种方法都可以进入
program
files
这个目录
8.
,
逗号相当于空格,
在某些情况下<
/p>
“,”
可以用来当做空格使
比如
dir,c:
9.
;
分号,当命令相同时,可以
将不同目标用;来隔离,但
执行效果不变,
如执行过程中发生错
误,
则只返回错误报
告,但程序还是
会执行。
比如:
dir
c:;d:e:;f:
以上命令相当于
dir c:
dir d:
dir
e:
dir f:
但是前面执行的盘不存在的话,后面的命令将不会执行。
例如:
C:>dir w:;d: /p;e: /p
结果为:系统找不到指定的路径。
1
0.
在
echo
的后面加一个点,
p>
所起到的作用是显示一空行。
以下范例显示的批处理程序包含前后各有一个空行的三
行消息:
@echo off
echo.
echo This batch program
echo formats and checks
echo new disks
echo.
如果想让打开的批处理命令的标题栏有名字的话可以用
到
title
这个参数
title
filename
可以屏蔽一切屏
幕的输出,例如:
dir >nul
2>nul
这样屏幕上什么都不会输出,也就是没有结果。
1>nul
表示将正确执行目录树的信息禁止输出,
2>nul
表示将执行过程中的错误信息禁止输出。
断开网络连接方法有两种
:
一种是
rasphone /h adsl
,<
/p>
另一
种是
rasdial adsl
/d
一般和
:
是联用的
goto
跳转的地方入口就是
。
goto
命令的另一种用法一:提
前结束程序。在程序中间
使用
goto
命令跳转到
某一标签,而这一标签的内容却定义为退出。如:
……
goto end
……
:end
dir
中有些命令是要牢记的
dir d: /s /p /b (/a
这后面还有一些参数
像
h,r,d,s/d)
具体
的可以看
帮助
%userprofile%
在写批处理时这个相当于
C:Documents
and SettingsAdministrator
在结
束关键进程的时候,
要先结束
这个进程
,
最好用系统自带的工具
taskkill
这个关
的时
候任何杀毒软件
都没有提示,但是如果换成了用
ntsd<
/p>
关的话,卡巴斯基
会报毒,而且这时的
e
xplorer
会在关闭的一下后马上自
启动,而
taskkill
就会
一直关着直到等你开启为止。
在使用
for
的时候当用到
/d
< br>时,
那是因为
set
中有
* ?
这
两个通配符
shift
1.
< br>可替代参数的编号是%
o-
%
9
,如果要在一个命令行上
使用超过
10
个可以被代换的参数,
则可使用
SHI
FT
命令
来突破此限制。
2.
每当执行
sHIFT
一次,
命令行上的所有参数将向左移动
一位。%
1
的内容将为%
2
的内容所取
代
…
,%
9
内
容则
由新的参数取代。
3.
%
o
表示批处理文件本身的名称,永远不变,所
以每次
执行时可以在批处理文件使用一次
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 (
p>
取到最前面
9
个参数
)
c:>shift (
移位
)
2 3 4 5 6 7 8 9 10 11(
取到另外
p>
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
,而第二个结果是一个无限制
的循环,一直不停的显示
st
ill running
,所以写程序的时
候一定要注意
errorlevel
若一个程序或
DOS
命令执行成功,则返回的
E
只
RORLEVEL
的值为
o
,否则为
1
< br>至
255
之间
AscII
值的任
意整数,其值只占一个字节约内存
<
/p>
空间
,
值得注意的是
IF
语句中检验的
ERRORLEVEL
< br>值是大
于或等于而不是等于,例如语句
IF
ERRORLEVEL 5
检验
的是
E
RRORLEVEL
>=
5
而
不是
ERRORLEVEL=5
,因此对于
5
至
255
p>
之间的任何整
数,此语句检验结果都是真值。
在变量延迟时要用到
setlocal
EnableDelayedExpansion
例如:
@echo off
setlocal
EnableDelayedExpansion
.......
然后写要用的代码
需要注意的是,<
/p>
一旦启用了变量延迟,
就要用!
号把变量
括起来,而不能用
%
号。
echo !n!
显示变量
n
的值
例如:
@echo off
&SETLOCAL ENABLEDELAYEDEXPANSION
set
mm=gril&echo !mm!
pause
ping
在批处理中有延时的作用,开始的时候不知道怎么
用,
后来才发现,
每
ping
一次的时间是一秒
,
所以写成
pin
g
/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%
的里
的
str
1
全部用
str2
替换
例如:
@echo
off
set a=
echo
替换前的值
:
set
var=%a: =qq%
echo
替换后的值
:
pause
结果是:替换前的值
:
很明显吧,那
个
空格被
qq
给代替啦
^-^
替换后的值
:
请按任意键继续
. . .
@echo off
set a=
echo
替换前的值
:
set var=%a:.=
伤脑筋
%
echo
替换后的值
:
pause
解释
set
var=%a:.=
伤脑筋
%
set
命令
var
变量名
字
a
是要进行字符替换的变量的
值<
/p>
,
为要替换的值
,
伤脑筋
为替换后的值
!
执行后就会把变量
%a%
里面的
全部替换为
< br>伤脑筋
这就是
set
的替换字符的很好的功能
!
先讲到这
%PATH:~10,5%
@echo off
set a=
set var=%a:~1,2%
echo %var%
pause
执行后
,
我们会发现只显示了
两个字母
,
我们的变
量
%a%
< br>的值不是为
吗
怎么只显示了第
2
个字母和第
3
个字母
分析一结果
< br>我们就可以很容易看出
%PATH:~10,5%
p>
就是显示变量
PATH
里指定几位的值
p>
!
分析
set
var=%a:~1,2%
set
命令
var
变量值
a
要进行字符操作的变量
从变量
第几位下一位开始显示
显示几位
和
起来就是把变量
a
的值从第一位开始
,
把后两位赋予给
变量
var
%PATH:~-10%
例子
@echo off
set a=
set var=%a:~-3%
echo %var%
pause
这个的意思是从右往左取三位,把取到的部分给了
var ,<
/p>
如果把负号去掉,
就成了从左往右去掉三位把剩下的部分
给了
var
%PATH:~0,-2%
例子
@echo off
set a=
set var=%a:~4,-3%
echo %var%
pause
结果是
verybat
,这段代码的意思是,从右去掉三位,把
左剩余的部分,
从第四位的下一位开始显示,
< br>把显示的内
容给了
var
如果改成
set
var=%a:~3,-3%
结果就是
.verybat
p>
延迟和
set
的综合应用:
@echo off
setlocal
enabledelayedexpansion
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
我觉得这段代码很意思,
do
里面的命令主要是分三块但
是这三块不能在
同一行,分三行写
.
因为它们是不同的命
令,要想写在一行的
话要加
&
p>
,写好后为
for /l %%i in (1,1,24) do
(cls
&echo. !love:~0,%%i! &ping/n 1
127.1>nul 2>nul)
for
在
DOs
提示符下可直接使用
FOR
语句,用法的区别在于
必须把%%
variable
写成%
variable
关于
FOR
语句的使用方法,归纳如下:
(1)
为了在各种
DOS
版本下都能运行,
%
%
vart6le
的变量
必须为单个字
符,应避
免使用%%
o
一%%
9
作为变量。
(2)FOR
%%
variaNeIN
tnle s
就
)command
%%
variable
其
中
File set
必须放在
括号内,文件的个数没有限制,只要不超过
D05
命令行
127
个字符的限制即可,文件之
间用空格或逗号作为分隔符分开,
文件名可以使用通配符。
(3)FoR
语句中后面的变量有时可省略,如:
FOR
%%
a
IN(*.BAK)D0 DIR
(4)FOR
语句的结尾如
果执行另一个批处理程序,执行结
束后,不再返回
FOR
语
FOR /D %%variable
IN (set) DO command /D
参数只能
显示
当前目录下的目录名字
@echo off
for /d %%i in (*) do @echo %%i
pause
把他保存放在
C
盘根目录执行
,
就会把
C
盘目录下的全部
目录名字打印出来
,
而文件名字一个也不显示
!
@echo off
for /d %%i in
(???) do @echo %%i
pause
这样的
话如果你当前目录下有目录名字只有
1-3
个字母
的
,
就会显示出来
,
没有就不显示了
这里解释下
*
号和
?
号的作用
,*
号表示任意
N
个字符
,
而
?
号
p>
只表示任意一个字符
FOR /R
[[drive:]path] %%variable IN (set) DO
command
它可以把当前或者你指定路径下的文件名字全
部读取
,
注
意是文件名字
@echo off
for /r c:
%%i in (*.exe) do @echo %%i
pause
把
C
盘根目录
,
和每个目录的子目录下面全部的
EXE
文件
p>
都列出来了
@echo off
for /r %%i in
(*.exe) do @echo %%i
pause
以
当前目录为搜索路径
,
显示当前目录的全部
EXE
文件列
出来
!
-
-
-
-
-
-
-
-
-
上一篇:口号标语之绶带标语
下一篇:四欧堂之二《化度寺故僧邕禅师舍利塔铭》释文及泽注