2013-07-19 64 views
2

我有一个小问题批量,我没有找到解决的办法! 我正在一个点系统上工作,只需要一个字符串来检查变量是否为负数。 这将是这样的:批量检查一个变量是否为

set /p points=10 
set /p price=15 
set /a result=%points%-%price% 
if result < 0 (goto error) else (goto done) 

:error 
echo You have not enough Points ! 

:done 
echo Transaction Successfully Finished ! 

的一点是,我想这取决于一个事实,即定义了钱(或类似的东西)的变量是正面或负面的用户重定向到一个不同的标签。

编辑:4年后的今天,感谢其帮助一个贫穷的脚本老兄,现在我正在学习:d

回答

6

我是一个批处理文件noob(但一个有抱负的爱好者!)所以请原谅我,如果我的回答没有帮助哈哈。

通过在命令行中输入if /?,你会看到这些比较符:

EQU - equal 
NEQ - not equal 
LSS - less than 
LEQ - less than or equal 
GTR - greater than 
GEQ - greater than or equal 

在这种情况下,我会用这个语法:

if result LSS 0 (goto :error) else (goto :done) 

我希望这有助于!

+0

thx man!真棒! – ratouney

+0

嗨,再次!我有几分钟的免费时间,并决定扩大这一点并纠正一些错误。这个文件经过测试,似乎工作。如果有任何错误,请让我知道。 http://pastebin.com/Ksv8yZ28 – Cecell

0
if result LSS 0 ... 

或GTR GEQ LEQ EQU NEQ取决于所要求的比较。

+0

你是什么意思? – ratouney

+0

我的意思是不是'如果结果<0(goto error)else(goto done)'试着用'替换它'如果结果LSS 0(goto error)else(goto done)''LSS'意味着LESS THAN。如果你想要大于或等于'GQ',大于或等于''LEQ'小于或等于'EQU',等于或等于'NEQ',则使用'GTR'。 – Magoo