[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] set /a计算获取随机数提示无效的数字什么原因

随机结果出错
  1. @echo off
  2. @setlocal enabledelayedexpansion
  3. ::>18!m!.txt type nul
  4. :loop
  5. @set "TTL=null"
  6. @set /a a=%random%*1%%254+1
  7. @set /a b=%random:~1,10%*1%%254+1
  8. @set /a c=%random:~2,10%*1%%254+1
  9. @set /a d=%random:~3,10%*1%%254+1
  10. @set ip=%a%.%b%.%c%.%d%
  11. @ping /n 1 127.0.0.1 >nul
  12. for /f "tokens=3 delims==" %%i in ('ping %ip% -n 2 -l 888 ^| find "TTL"') do (
  13.     set TTL=%%i
  14. )
  15. @if "!TTL!" equ "null" (
  16.     goto :loop
  17. )
  18. @ping /n 1 127.0.0.1 >nul
  19. @set ms=!TTL:~0,-6!
  20. @ping /n 1 127.0.0.1 >nul
  21. @set /a v=%ms%%%16+1
  22. @set m=%date:~5,2%%date:~8,2%
  23. @echo %v%>> 18!m!.txt
  24. goto :loop
复制代码

本帖最后由 380077403 于 2018-3-17 07:49 编辑

显示::
无效数字。数字常数只能是十进制(17),十六位进制(0x11)或
八进制(021)。
ECHO 处于关闭状态。
无效数字。数字常数只能是十进制(17),十六位进制(0x11)或
找不到操作数。



结果:10
14
10
11
16
16
ECHO 处于关闭状态。
10

TOP

本帖最后由 yhcfsr 于 2018-3-17 08:30 编辑

这个问题很经典
  1. set/a n=008或set/a n=009
复制代码
1 发生在set /a 命令中
2 以0开头的数字,被认为是八进制,当出现八进制无法识别的数字如8或9,就会出现这个错误


当随机数字如10089,如果截取0089这样的数字参与set/a的计算,就会导致如题错误。

TOP

回复 3# yhcfsr


    set /a b=%random:~0,5%*1%%254+1
set /a c=%random:~0,4%*1%%254+1

我是这样做的 虽然解决了 但是以下 难道是是SHE  ttl等于NULL  如果TTL等于null 返回LOOP  这个时间TTL是空的好像
:loop
set "TTL=null"




if "!TTL!" equ "null" (
    goto :loop

但是以上 难道是是SHE  ttl等于NULL  如果TTL等于null 返回LOOP  这个时间TTL是空的好像 就是 空=空 就返回?

echo %v% >> 18!m!.txt
这一行  V 在正确显示 发现 会出现一个数字(1)一同显示而又不做输出 这个(1)是怎么来的为什么不会输出 晕
显示:
C:\Users\Administrator\Desktop\1真随机相关>echo 13  1>>18!m!.txt
而这个只会输出 变量13 后面1是怎么来的为什么不输出 晕

TOP

直接说出你的意图,说实在,全篇用@的,我都懒得去猜你的思路。

TOP

本帖最后由 /zhqsystem/zhq 于 2018-3-17 20:51 编辑

IP地址池这么截取是错误的,
这段%random:~1,10%很难理解如果产生随机数值是100,那么截取字符是00,有意义吗?如果产生随机数字符为0-9,那么字符串=空值,没有值时变量取值=字符串而不是变量
标准取值是=%random%%%256=范围0-255
ping建议取通用"TLL="的搜索,假设域名为22TTL1232.com,对于顶楼已经排除了这个错误,但是只是建议
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

16
16
12
5
5
10
12
12
1
13
10
10
10
这个是结果 一点也不随机 晕

TOP

返回列表