永发信息网

请问在批处理文件中如何使用变量

答案:2  悬赏:50  手机版
解决时间 2021-03-24 03:36
请问在批处理文件中如何使用变量
最佳答案
我来回答你
这是可以做到的
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 %1 %2 …… %9 这样的变量
比如批处理文件test.bat内容如下
type %1

则输入 test.bat 1.txt
会执行type 1.txt这个命令
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
包头青山附近有哪些电影院?
Speaking of all the songs he has written,
工厂连续放假八个月,每月只发270生活费,工
夏普 AR-158X显示L是什么问题?
2013款雪弗兰4l1.4排量
广珠城轨顺德哪个站距离顺德华盖路步行街最近
俄罗斯的卢布值钱吗?
物质的结构决定物质的性质,下列关于物质结构
找一本男主角姓叶女主角姓白的都市小说
梦到自己快要从楼上掉下来,拼命抓住一根绳子
一台电加热器功率4KW电压220V钢管敷设计算电
4.8-括号2.8+5/7
区字的偏旁部首叫什么?怎么读?
用手电照射黑暗房间墙壁上的镜子,如果眼睛不
沉默不解释的经典语录,关于沉默的名言
推荐资讯
单选题19世纪末美国经济结构的特点是19世纪末
有谁知道呼和浩特市公园东路的 八十年代怀旧
坤命什么意思
【紧急】C语言问题
百信电器怎么去啊,有知道地址的么
下列对加粗词语解释完全正确的一项是①朕皇考
魅蓝note2自带天气时钟被删除了,本来的时钟
景逸x5和瑞虎5哪个好
小金毛多大开始训练,金毛多大开始换牙
老公把手机设了密码,晚上睡觉把手机藏起来,
jsp路径问题,如图:我想从index.jsp,页面跳
锦玉斋地址有知道的么?有点事想过去
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?