批处理文件中的“%%”算法是什么?

Jos*_*hua 3 windows batch-file cmd.exe

对不起,如果这是一个愚蠢的问题,但我不知道 %% 算术是什么。当我设置a为 时30 %% 35,它设置a为值 30。但是如果我切换数字,它设置a为值 5。我只是不明白这一点。

@echo off
set /a a=30 %% 35
echo %a%
pause
Run Code Online (Sandbox Code Playgroud)

Jef*_*lin 14

%%运算符 - 也就是说,它执行其左参数除以右参数的整数除法,并返回余数SS64 onSET解释了算术SET命令中所有允许的运算符。

正如@IvanMilyakov 在评论中指出的那样,如果您SET /A ...直接从命令行而不是在批处理文件中执行 a,则可以使用%代替%%; 在批处理文件中,您需要将其加倍以防止将其视为变量转义。

  • 准确地说,`%` 是操作符;它只需要在批处理文件中加倍 (8认同)
  • +1 指向 SS64 的链接,它是我遇到的批处理文件脚本的最佳参考/学习资源。 (3认同)

Mic*_*vey 8

A % B在提示符处是A %% B批处理,因为%符号是特殊的,需要在批处理中“转义”。在%字符的情况下,转义字符是另一个%字符。

正如 Jeff Zeitlin 所说,%or%%运算符是模运算符,并给出 A 除以 B 后的余数,所以35 % 30给出 5 因为当你将 35 除以 30 时,你会得到答案 1 和 5 剩下的,你也会得到 5 from 65 % 3095 % 30并且很快。如果 B 大于 A,则结果A % B始终为 A。这就是30 % 35返回 30 的原因。

您可以set /a在提示下尝试操作。试试看set /a 8%7你会得到什么。你不需要空格。