创建一个随机数并检查它是奇数还是偶数

use*_*887 0 random if-statement batch-file

我想创建一个批处理文件,当运行时,创建一个从0到100的随机整数,然后通过if语句运行它,检查它是奇数还是偶数.我遇到了一些麻烦,所以这就是我到目前为止的情况.

@echo off
set /a num=%random% %%100 +1
if ( num % 2 == 0 ) {
     //even
}
else
{
    //odd
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是 - "此时意外数字"

Mag*_*goo 5

@ECHO OFF
SETLOCAL
set /a num=%random% %%100 +1
SET /a nummod2=num %% 2
IF %nummod2% == 0 (ECHO %num% is even) ELSE (ECHO %num% is odd)

GOTO :EOF
Run Code Online (Sandbox Code Playgroud)

传统IF语法是if [not] operand1==operand2 somethingtodooperand1和operand2都是字符串的地方.如果字符串包含分隔符Space,Tab或其他对批处理具有特殊含义的字符,则字符串必须为"enclosed in quotes".

从根本上说,if比较字符串.运算符必须是一组固定的运算符之一[== equ neq gtr geq lss leq]因此cmd反对num它预期运算符的位置.

无法在if语句的参数中执行计算.

%%需要执行mod操作,因为它%是一个特殊字符,它本身需要被a转义%.

请注意,{并且}是普通字符,对批处理没有特殊意义,必须遵循备注

rem remark string
Run Code Online (Sandbox Code Playgroud)

有一个常用的漏洞利用

::comment
Run Code Online (Sandbox Code Playgroud)

实际上,一个破碎的标签,可能会产生无法预料的副作用(如结束代码块)