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

[文本处理] 这段随机数批处理代码为什么不行?

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p a=
  4. set /a b=%random%%%100+10
  5. set /a c=%a%*%b%
  6. echo %a%*%b%=%c%
  7. pause
  8. echo %b%>1.txt
  9. echo %c%>2.txt
  10. set /p dv=
  11. for /f %%i in (2.txt) do (
  12.    for /f %%n in (1.txt) do (
  13.    set /a d=!dv!*%%n
  14.    if "!d!"="%%i" goto 1
  15.    echo 错误
  16.    pause
  17.   )
  18. )
  19. :1
  20. echo 成功
  21. pause
复制代码

有人吗?有人在吗?

TOP

回复 2# 502283644


    怎么不行?

    set /p dv=

    set /a d=!dv!*%%n
   
显示:找不到操作数。

dv为嘛设置为空?

TOP

dv是要输入的

TOP

楼主意思是把一个密码  以 c/b 这样一个分数的形式保存到 两个文件(分子 分母 各一个文件), 再来猜这个密码

如果设密码时就空的话, 直接就会报错: 找不到操作数吧

TOP

仔细比较一下, 看看下面改动了哪些地方, 必要的修改是 比较相等 要用  == 或者 equ 或者 neq   不是 =   还有 错误分支的跳转要截断, 不要让它顺序流转到正确的分支
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p a=
  4. set /a b=%random%%%100+10
  5. set /a c=a*b
  6. echo %a%*%b%=%c%
  7. pause
  8. echo %b%>1.txt
  9. echo %c%>2.txt
  10. set /p dv=
  11. for /f %%i in (2.txt) do (
  12.    for /f %%n in (1.txt) do (
  13.    set /a d=dv*%%n
  14.    if "!d!"=="%%i" goto 1
  15.    echo 错误
  16.    pause
  17.    goto :eof
  18.   )
  19. )
  20. :1
  21. echo 成功
  22. pause
复制代码

TOP

回复 5# neorobin


    是啊

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p a=
  4. set /a b=%random%%%100+10
  5. set /a c=a*b
  6. echo %a%*%b%=%c%
  7. pause
  8. echo %b%>1.txt
  9. echo %c%>2.txt
  10. set /p dv=
  11. for /f %%i in (2.txt) do (
  12.    for /f %%n in (1.txt) do (
  13.    set /a d=dv*%%n
  14.    if "!d!"=="%%i" goto 1
  15.    echo 错误
  16.    pause
  17.    exit
  18.   )
  19. )
  20. :1
  21. echo 成功
  22. pause
  23. rem 可以吗?
复制代码

TOP

返回列表