批处理命令和变量

王朝other·作者佚名  2007-01-11
窄屏简体版  字體: |||超大  

1。批处理命令:

http://labmice.techtarget.com/articles/batchcmds.htm

http://smallphantom.blogchina.com/

2。批处理变量及其类型

DOS可以说是弱类型的

没有像C语言那样分得很细

你想一次ping遍局域网

可以这样做

for /L %i in (1,1,255) do @ping -a 192.168.0.%i

这样就遍历了从192.168.0.1到192.168.0.255这256个地址

注意这是在CMD下的输入

如果想实现批处理要将其中的"%"用"%%"替代

for的L参数说明变量是整数类型

这样循环才有意义

还有你说手动将变量加一操作

可以使用set命令

但要注意参数的使用

比如一条命令

set aa=10

这句话单拿出来很难说这个aa是个什么类型

因为10可以是个数字

但是

set aa=shily

则不然

shily只能是字符串

至于加法等算术操作可以通过A参数来说明

比如在set aa=10的前提下执行

set /A aa=%aa%+1

那么aa的值就成了11

但是如果这样简单的写

set aa=%aa%+1

那么aa的值是什么呢?

事实上系统只做简单的拼接

aa的值边成了10+1

这是个字符串

于是上文的循环可以使用goto 来做了

set ip=0

:loop

if %ip%==255 goto end

set /A ip=%ip%+1

ping 192.168.0.%ip%

goto loop

:end

这样就实现了便历的功能

但是for语句不是更方便吗?

一些小问题:

定义过变量后使用%xxx%的格式来访问变量

如果变量不存在

并不会出现严重的错误

比如set aa=%abcd%

而abcd变量并不存在

那么aa的值就是%abcd%

在学习的时候检测变量的值可以使用

echo %aa%的格式

还有个人性化的地方

set aa=aaaaaaa

aet /A bb=%aa%+1

echo %bb%

那么bb的值是1

这是错误的

aa本不是整数变量怎么能加一呢

所以系统将它当成0来处理

set aa=15+15

echo %aa%

set bb=%aa%+1

echo %bb%

将先输出"15+15"然后输出"31"

这是人性化的地方

系统将15+15当成了30来评估

好了就先写这些

官方帮助参考

for /?

set /?

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航