Board logo

标题: [数值计算] [已解决]批处理中循环累加运算该如何处理? [打印本页]

作者: thp2008    时间: 2023-8-11 10:59     标题: [已解决]批处理中循环累加运算该如何处理?

本帖最后由 thp2008 于 2023-8-11 13:47 编辑
  1. 批处理要实现的功能就是如下:
  2. wget --spider https://www.win-rar.com/fileadmin/winrar-versions/sc/sc20230801/rrlb/winrar-x64-623sc.exe
  3. wget --spider https://www.win-rar.com/fileadmin/winrar-versions/sc/sc20230802/rrlb/winrar-x64-623sc.exe
  4. wget --spider https://www.win-rar.com/fileadmin/winrar-versions/sc/sc20230803/rrlb/winrar-x64-623sc.exe
  5. wget --spider https://www.win-rar.com/fileadmin/winrar-versions/sc/sc20230804/rrlb/winrar-x64-623sc.exe
  6. wget --spider https://www.win-rar.com/fileadmin/winrar-versions/sc/sc20230805/rrlb/winrar-x64-623sc.exe
  7. wget --spider https://www.win-rar.com/fileadmin/winrar-versions/sc/sc20230806/rrlb/winrar-x64-623sc.exe
  8. wget --spider https://www.win-rar.com/fileadmin/winrar-versions/sc/sc20230807/rrlb/winrar-x64-623sc.exe
  9. wget --spider https://www.win-rar.com/fileadmin/winrar-versions/sc/sc20230808/rrlb/winrar-x64-623sc.exe
  10. .........
  11. wget --spider https://www.win-rar.com/fileadmin/winrar-versions/sc/sc20230831/rrlb/winrar-x64-623sc.exe
  12. 检测输出的结果,输出的结果中没有Remote file does not exist -- broken link!!! 就表示链接文件存在。显示链接文件存在的链接,只要测试到链接文件存在,批处理就显示结果并自动结束批处理了。
复制代码
链接文件存在结果:
wget --spider https://www.win-rar.com/fileadmi ... inrar-x64-623sc.exe
Spider mode enabled. Check if remote file exists.
--2023-08-11 10:35:52--  https://www.win-rar.com/fileadmi ... inrar-x64-623sc.exe
Resolving www.win-rar.com (www.win-rar.com)... 51.195.68.163
Connecting to www.win-rar.com (www.win-rar.com)|51.195.68.163|:443... connected.
HTTP request sent, awaiting response... 200
Length: 3717184 (3.5M) [application/octet-stream]
Remote file exists.

链接文件不存在结果:
wget --spider https://www.win-rar.com/fileadmi ... inrar-x64-623sc.exe
Spider mode enabled. Check if remote file exists.
--2023-08-11 10:36:23--  https://www.win-rar.com/fileadmi ... inrar-x64-623sc.exe
Resolving www.win-rar.com (www.win-rar.com)... 51.195.68.163
Connecting to www.win-rar.com (www.win-rar.com)|51.195.68.163|:443... connected.
HTTP request sent, awaiting response... 404
Remote file does not exist -- broken link!!![/code]下面帮我修改完善一下,实现上述的功能,感谢!
  1. @echo off
  2. echo.
  3. echo 探测WinRAR下载地址
  4. echo.
  5. set /p yue=请输入要探测的月份(必须是两位输入,不足补0,例:08):
  6. REM 设置“月份”变量,必须是两位表达,不足补0
  7. set ri=01
  8. REM 设置“日”起始值,必须是两位表达,不足补0,为了方便,所有月份都是1--31去探测就好了。
  9. wget --spider https://www.win-rar.com/fileadmin/winrar-versions/sc/sc2023%yue%%ri%/rrlb/winrar-x64-623sc.exe
  10. REM 这里帮忙改一下,如何循环运行、运算、查找结果,比对,显示,01+1=2还02,结果必须以02展示。
  11. REM 要求从01开始,每运行一次,就自动+1,到31结束。
  12. REM 每句执行后,输出的结果中没有Remote file does not exist -- broken link!!! 就表示链接文件存在。显示链接文件存在的链接。
  13. REM 完成。
复制代码
这种方法可以探测,但速度不快,如果大家有更好、更快的方法实现,欢迎提供!
作者: Batcher    时间: 2023-8-11 11:22

回复 1# thp2008
  1. setlocal enabledelayedexpansion
  2. for /l %%i in (101,1,131) do (
  3.     set "ThisDay=%%i"
  4.     wget --spider https://www.win-rar.com/fileadmin/winrar-versions/sc/sc2023%yue%!ThisDay:~1!/rrlb/winrar-x64-623sc.exe
  5. )
复制代码

作者: jszw666    时间: 2023-8-11 11:41

学习一下,这对我来说,新知识,开阔下眼界。
作者: thp2008    时间: 2023-8-11 11:47

感谢老大,我测试了,计算挺好的。可以这样处理,只要后面两位。

如何将每次循环输出的内容进行查找,并判断,跟上面的内容结合在一起

查找:
findstr /I "Remote file does not exist"

判断:
if 上面如果找到了,就继续执行。
if 上面没有找到 else 就显示那个链接地址 结束
pause
  1. @echo off
  2. echo.
  3. echo 探测WinRAR下载地址
  4. echo.
  5. set /p yue=请输入要探测的月份(必须是两位输入,不足补0,例:08):
  6. setlocal enabledelayedexpansion
  7. for /l %%i in (101,1,131) do (
  8.     set "ThisDay=%%i"
  9.     wget --spider https://www.win-rar.com/fileadmin/winrar-versions/sc/sc2023%yue%!ThisDay:~1!/rrlb/winrar-x64-623sc.exe
  10. )
复制代码

作者: hfxiang    时间: 2023-8-11 12:39

回复 1# thp2008
可用gawk( http://bcn.bathome.net/tool/5.1.0/gawk.exe )来查找:
  1. @rem 查找第1个有效链接
  2. @echo off
  3. rem 保存为ANSI编码格式
  4. set "out="
  5. FOR /L %%A IN (20230801,1,20230831) DO (
  6. for /f %%B in ('wget --spider "https://www.win-rar.com/fileadmin/winrar-versions/sc/sc%%A/rrlb/winrar-x64-623sc.exe" 2^>^&1^|gawk "NR==2{Fn=$NF}/Remote file exists\./{print Fn}"') do set "out=%%B"
  7. if defined out goto exit_label
  8. )
  9. :exit_label
  10. if defined out (
  11. echo;第1个有效链接:%out%
  12. ) else echo;未找到有效链接
复制代码

作者: Batcher    时间: 2023-8-11 13:16

回复 4# thp2008
  1. setlocal enabledelayedexpansion
  2. for /l %%i in (101,1,131) do (
  3.     set "ThisDay=%%i"
  4.     wget --spider https://www.win-rar.com/fileadmin/winrar-versions/sc/sc2023%yue%!ThisDay:~1!/rrlb/winrar-x64-623sc.exe 2>&1 | findstr /c:"Remote file does not exist"
  5.     if errorlevel 1 (
  6.         echo 文件存在
  7.     ) else (
  8.         echo 文件不存在
  9.     )
  10. )
复制代码

作者: thp2008    时间: 2023-8-11 14:04

最终版本:
  1. @echo off
  2. echo.
  3. echo 探测WinRAR下载地址
  4. echo.
  5. set /p year=请输入要探测的年份,例如:2023 :
  6. echo.
  7. set /p yue=请输入要探测的月份(必须是两位输入,不足补0,例如:08):
  8. echo.
  9. set /p banben=请输入要探测的WinRAR版本,例如:623 :
  10. echo.
  11. echo 要探测的WinRAR下载地址为:https://www.win-rar.com/fileadmin/winrar-versions/sc/sc%year%%yue%01---%year%%yue%31/rrlb/winrar-x64-%banben%sc.exe
  12. echo.
  13. echo 探测中,请稍后......
  14. echo.
  15. set "out="
  16. FOR /L %%A IN (2023%yue%01,1,2023%yue%31) DO (
  17. for /f %%B in ('wget --spider "https://www.win-rar.com/fileadmin/winrar-versions/sc/sc%%A/rrlb/winrar-x64-%banben%sc.exe" 2^>^&1^|gawk "NR==2{Fn=$NF}/Remote file exists\./{print Fn}"') do set "out=%%B"
  18. if defined out goto exit_label
  19. )
  20. :exit_label
  21. if defined out (
  22. echo;第1个有效链接:%out%
  23. ) else echo;未找到有效链接
  24. echo.
  25. echo.
  26. pause
复制代码
输出结果:


探测WinRAR下载地址

请输入要探测的年份,例如:2023 :2023

请输入要探测的月份(必须是两位输入,不足补0,例如:08):08

请输入要探测的WinRAR版本,例如:623 :623

要探测的WinRAR下载地址为:https://www.win-rar.com/fileadmi ... inrar-x64-623sc.exe

探测中,请稍后......

第1个有效链接:https://www.win-rar.com/fileadmi ... inrar-x64-623sc.exe


请按任意键继续. . .
作者: thp2008    时间: 2023-8-11 14:24

不使用第三方工具的版本:
  1. @echo off
  2. echo.
  3. echo 探测WinRAR下载地址
  4. echo.
  5. set /p year=请输入要探测的年份,例如:2023 :
  6. echo.
  7. set /p yue=请输入要探测的月份(必须是两位输入,不足补0,例如:08):
  8. echo.
  9. set /p banben=请输入要探测的WinRAR版本,例如:623 :
  10. echo.
  11. echo 要探测的WinRAR下载地址为:https://www.win-rar.com/fileadmin/winrar-versions/sc/sc%year%%yue%01---%year%%yue%31/rrlb/winrar-x64-%banben%sc.exe
  12. echo.
  13. echo 探测中,请稍后......
  14. echo.
  15. setlocal enabledelayedexpansion
  16. for /l %%i in (101,1,131) do (
  17.     set "ThisDay=%%i"
  18.     wget --spider https://www.win-rar.com/fileadmin/winrar-versions/sc/sc%year%%yue%!ThisDay:~1!/rrlb/winrar-x64-%banben%sc.exe 2>&1 | findstr /c:"Remote file does not exist"
  19.     if errorlevel 1 (
  20.         echo 找到有效链接:https://www.win-rar.com/fileadmin/winrar-versions/sc/sc%year%%yue%!ThisDay:~1!/rrlb/winrar-x64-%banben%sc.exe & goto end
  21.     ) else (
  22.         echo.
  23.     )
  24. )
  25. echo.
  26. :end
  27. echo.
  28. pause
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2