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

在批处理文件中怎么使用像int,float,double等类型的变量,有这些变量吗?现在我想做一个pingip的批处理程序setc=0//c要可以改变从1-255setc... 在批处理文件中怎么使用像int,float,double等类型的变量,有这些变量吗?
现在我想做一个ping ip的批处理程序
set c=0 //c要可以改变从1-255
set c=c+1//在sql命令里面可以用,这里不行,在网上有count c,但是提示count不是内部或外部命令
:loop
ping 221.14.249.%c%
goto loop
请指教
展开
 我来答
天下有敌的店铺
推荐于2017-11-26 · TA获得超过504个赞
知道小有建树答主
回答量:223
采纳率:0%
帮助的人:287万
展开全部
我来回答你
这是可以做到的
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 /?
donaroo
2006-05-07 · TA获得超过1365个赞
知道小有建树答主
回答量:934
采纳率:0%
帮助的人:638万
展开全部
批处理里没有这些变量
只有%0 %1 %2 …… %9 这样的变量
比如批处理文件test.bat内容如下
type %1

则输入 test.bat 1.txt
会执行type 1.txt这个命令
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式