关闭

批处理命令和变量

标签: doscmd语言c
1930人阅读 评论(1) 收藏 举报
分类:

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 /?

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:158648次
    • 积分:2763
    • 等级:
    • 排名:第13005名
    • 原创:117篇
    • 转载:30篇
    • 译文:0篇
    • 评论:8条
    文章分类
    最新评论