Board logo

标题: set /a怎么不显示 [打印本页]

作者: fe19880919     时间: 2010-6-14 01:22    标题: set /a怎么不显示

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

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

set/a a=3,b=a+1
屏蔽错误输出使用 2>nul
作者: jarry0932     时间: 2010-6-14 11:48
我不知道LZ为什么要对错误的语法再屏蔽错误的提示…批处理不是高级程序设计语言,对变量的引用要加%
作者: fe19880919     时间: 2010-6-14 12:03
回3楼的话:
我弄了一个记录数据的东西,要加入编号。做法如下:
1.先用if判断有没有记录文件,如果没有,设置记录号为0;
2.如果有记录,就设记录里面的第一个数为记录号(取法为%m:~0,1%);
3.记录号到10,也就是两位时,再取一位就会出错,所以我就又加了个判断(
set /a s=%m:~0,2%
if errorlevel 1 goto next

这里用if判断上一个是不是运行成功,当记录号是一位时,是不能成功的,但是当记录号是两位时,就能成功了,就会直接到next。
当然大家哪个有更好的办法的,可以发出来教下我,我也是初学者。
作者: fe19880919     时间: 2010-6-14 12:04
另外谢下Hanyeguxing, 他的办法很好。
作者: Hanyeguxing     时间: 2010-6-14 13:13

@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 ]
作者: fe19880919     时间: 2010-6-14 13:38
6楼的第二个代码确实好用,比我原来的好多了。不过我用过之后发现了个小问题,因为我的记录号是用1.来写的,用你的set a=%%a得出的结果是1.因为多个.所以下面的计算也会跟着出错。只能用set /a a=%%a,但是又会多出几个显示运算符不存在。
最后的办法是用你教的:set /a a=%%a 2>nul
(2>nul关闭错误回显)
作者: Hanyeguxing     时间: 2010-6-14 14:57
带点的话:
@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%

作者: jwm112377     时间: 2010-9-27 17:30
set不能用在复合语句里面比如if 1==1 set a=2或者for %%i in (a) do set a=2