每当我激活此代码时,它都会立即关闭控制台。
set RAND=%RANDOM% %%100
if %RAND% gtr '25'
如果 if 为假,我希望它继续运行,如果为真,则转到其他位置。
两行代码 - 四个问题
set RAND=%RANDOM% %%100
if %RAND% gtr '25'
首先,要将变量设置为计算结果,您需要set /a
。就目前而言,rand
将被设置为12345 %100
- 一个字符串(一个%
,因为%
转义%
然后,您的第二行将被调用为
if 12345 %100 gtr '25'
这违反了if
语法 -%100
会混淆它,因为它期望在该位置有一个比较运算符(==,equ,neq,gtr,lss,leq,geq),因此它将生成错误消息并停止。如果您使用点运行,单击并咯咯笑,然后窗口将立即关闭。调试时需要从命令提示符运行批处理程序。
下一个问题是25
永远不会等于'25'
- 引号是要比较的字符串的一部分。 将它们放在两侧或从两侧省略它们。批处理仅使用字符串 -set /a
语法理解并控制从字符串更改为数字表示形式(仅限整数)所需的转换操作,if
将尝试将参数转换为数字进行比较 - 在任何一方失败时,if
恢复为字符串比较。
最后,如果比较评估为true
,您没有向if
提供任何操作 - 这是对if
结构的又一次违反。
在文件末尾暂停...暂停不允许关闭批处理文件,除非您按下某个键(如空格键)。
@echo off
cls
echo This is just an example
pause
exit