中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: set /a怎么不显示 上一主题 | 下一主题
fe19880919
初级用户





积分 27
发帖 24
注册 2010-5-2
状态 离线
『楼 主』:  set /a怎么不显示

如下:
set a=3.
set /a b=a+1
运行显示:运算符不存在。
改成:
set a=3.
set /a b=a+1>nul
运行结果还是运算符不存在。
怎么才能把“运算符不存在”不让电脑显示啊?>nul都不管用了,哪个懂的教下。

2010-6-14 01:22
查看资料  发送邮件  发短消息 网志  OICQ (1161560405)  编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 2 楼』:  


set a=3
set/a b=a+1

set/a a=3,b=a+1
屏蔽错误输出使用 2>nul



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-6-14 07:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jarry0932
初级用户





积分 128
发帖 122
注册 2009-9-21
状态 离线
『第 3 楼』:  

我不知道LZ为什么要对错误的语法再屏蔽错误的提示…批处理不是高级程序设计语言,对变量的引用要加%

2010-6-14 11:48
查看资料  发送邮件  发短消息 网志  OICQ (274997087)  编辑帖子  回复  引用回复
fe19880919
初级用户





积分 27
发帖 24
注册 2010-5-2
状态 离线
『第 4 楼』:  

回3楼的话:
我弄了一个记录数据的东西,要加入编号。做法如下:
1.先用if判断有没有记录文件,如果没有,设置记录号为0;
2.如果有记录,就设记录里面的第一个数为记录号(取法为%m:~0,1%);
3.记录号到10,也就是两位时,再取一位就会出错,所以我就又加了个判断(
set /a s=%m:~0,2%
if errorlevel 1 goto next

这里用if判断上一个是不是运行成功,当记录号是一位时,是不能成功的,但是当记录号是两位时,就能成功了,就会直接到next。
当然大家哪个有更好的办法的,可以发出来教下我,我也是初学者。

2010-6-14 12:03
查看资料  发送邮件  发短消息 网志  OICQ (1161560405)  编辑帖子  回复  引用回复
fe19880919
初级用户





积分 27
发帖 24
注册 2010-5-2
状态 离线
『第 5 楼』:  

另外谢下Hanyeguxing, 他的办法很好。

2010-6-14 12:04
查看资料  发送邮件  发短消息 网志  OICQ (1161560405)  编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 6 楼』:  


@echo off
if exist 记录.txt set/p p=<记录.txt
set/a p+=1
echo.新记录号:%p%
>记录.txt echo.%p%
或:
@echo off
if exist 记录.txt for /F "tokens=1*" %%a in (记录.txt) do set a=%%a&set b=%%b
if not defined b set "b=寒 夜 孤 星"
set/a a+=1
echo.新记录号:%a%.其他内容:%b%
>记录.txt echo.%a% %b%
[ Last edited by Hanyeguxing on 2010-6-14 at 13:21 ]



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-6-14 13:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fe19880919
初级用户





积分 27
发帖 24
注册 2010-5-2
状态 离线
『第 7 楼』:  

6楼的第二个代码确实好用,比我原来的好多了。不过我用过之后发现了个小问题,因为我的记录号是用1.来写的,用你的set a=%%a得出的结果是1.因为多个.所以下面的计算也会跟着出错。只能用set /a a=%%a,但是又会多出几个显示运算符不存在。
最后的办法是用你教的:set /a a=%%a 2>nul
(2>nul关闭错误回显)

2010-6-14 13:38
查看资料  发送邮件  发短消息 网志  OICQ (1161560405)  编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 8 楼』:  

带点的话:
@echo off
if exist 记录.txt set/p p=<记录.txt
set/a p+=1
set p=%p:.=%
echo.新记录号:%p%.
>记录.txt echo.%p%.
或:
@echo off
if exist 记录.txt for /F "tokens=1* delims=." %%a in (记录.txt) do set a=%%a&set b=%%b
if not defined b set "b=寒 夜 孤 星"
set/a a+=1
echo.新记录号:%a%. 其他内容:%b%
>记录.txt echo.%a%. %b%




批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-6-14 14:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jwm112377
初级用户





积分 25
发帖 20
注册 2009-6-16
状态 离线
『第 9 楼』:  

set不能用在复合语句里面比如if 1==1 set a=2或者for %%i in (a) do set a=2

2010-9-27 17:30
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: