![Board logo](images/default/logo.gif)
标题: [数值计算] [已解决]批处理中循环累加运算该如何处理? [打印本页]
作者: thp2008 时间: 2023-8-11 10:59 标题: [已解决]批处理中循环累加运算该如何处理?
本帖最后由 thp2008 于 2023-8-11 13:47 编辑
- 批处理要实现的功能就是如下:
- wget --spider https://www.win-rar.com/fileadmin/winrar-versions/sc/sc20230801/rrlb/winrar-x64-623sc.exe
- wget --spider https://www.win-rar.com/fileadmin/winrar-versions/sc/sc20230802/rrlb/winrar-x64-623sc.exe
- wget --spider https://www.win-rar.com/fileadmin/winrar-versions/sc/sc20230803/rrlb/winrar-x64-623sc.exe
- wget --spider https://www.win-rar.com/fileadmin/winrar-versions/sc/sc20230804/rrlb/winrar-x64-623sc.exe
- wget --spider https://www.win-rar.com/fileadmin/winrar-versions/sc/sc20230805/rrlb/winrar-x64-623sc.exe
- wget --spider https://www.win-rar.com/fileadmin/winrar-versions/sc/sc20230806/rrlb/winrar-x64-623sc.exe
- wget --spider https://www.win-rar.com/fileadmin/winrar-versions/sc/sc20230807/rrlb/winrar-x64-623sc.exe
- wget --spider https://www.win-rar.com/fileadmin/winrar-versions/sc/sc20230808/rrlb/winrar-x64-623sc.exe
- .........
- wget --spider https://www.win-rar.com/fileadmin/winrar-versions/sc/sc20230831/rrlb/winrar-x64-623sc.exe
- 检测输出的结果,输出的结果中没有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]下面帮我修改完善一下,实现上述的功能,感谢!- @echo off
- echo.
- echo 探测WinRAR下载地址
- echo.
- set /p yue=请输入要探测的月份(必须是两位输入,不足补0,例:08):
- REM 设置“月份”变量,必须是两位表达,不足补0
- set ri=01
- REM 设置“日”起始值,必须是两位表达,不足补0,为了方便,所有月份都是1--31去探测就好了。
-
- wget --spider https://www.win-rar.com/fileadmin/winrar-versions/sc/sc2023%yue%%ri%/rrlb/winrar-x64-623sc.exe
- REM 这里帮忙改一下,如何循环运行、运算、查找结果,比对,显示,01+1=2还02,结果必须以02展示。
- REM 要求从01开始,每运行一次,就自动+1,到31结束。
- REM 每句执行后,输出的结果中没有Remote file does not exist -- broken link!!! 就表示链接文件存在。显示链接文件存在的链接。
- REM 完成。
复制代码
这种方法可以探测,但速度不快,如果大家有更好、更快的方法实现,欢迎提供!
作者: Batcher 时间: 2023-8-11 11:22
回复 1# thp2008 - setlocal enabledelayedexpansion
- for /l %%i in (101,1,131) do (
- set "ThisDay=%%i"
- wget --spider https://www.win-rar.com/fileadmin/winrar-versions/sc/sc2023%yue%!ThisDay:~1!/rrlb/winrar-x64-623sc.exe
- )
复制代码
作者: jszw666 时间: 2023-8-11 11:41
学习一下,这对我来说,新知识,开阔下眼界。
作者: thp2008 时间: 2023-8-11 11:47
感谢老大,我测试了,计算挺好的。可以这样处理,只要后面两位。
如何将每次循环输出的内容进行查找,并判断,跟上面的内容结合在一起
查找:
findstr /I "Remote file does not exist"
判断:
if 上面如果找到了,就继续执行。
if 上面没有找到 else 就显示那个链接地址 结束
pause- @echo off
- echo.
- echo 探测WinRAR下载地址
- echo.
- set /p yue=请输入要探测的月份(必须是两位输入,不足补0,例:08):
- setlocal enabledelayedexpansion
- for /l %%i in (101,1,131) do (
- set "ThisDay=%%i"
- wget --spider https://www.win-rar.com/fileadmin/winrar-versions/sc/sc2023%yue%!ThisDay:~1!/rrlb/winrar-x64-623sc.exe
- )
复制代码
作者: hfxiang 时间: 2023-8-11 12:39
回复 1# thp2008
可用gawk( http://bcn.bathome.net/tool/5.1.0/gawk.exe )来查找:- @rem 查找第1个有效链接
- @echo off
- rem 保存为ANSI编码格式
- set "out="
- FOR /L %%A IN (20230801,1,20230831) DO (
- 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"
- if defined out goto exit_label
- )
- :exit_label
- if defined out (
- echo;第1个有效链接:%out%
- ) else echo;未找到有效链接
复制代码
作者: Batcher 时间: 2023-8-11 13:16
回复 4# thp2008 - setlocal enabledelayedexpansion
- for /l %%i in (101,1,131) do (
- set "ThisDay=%%i"
- 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"
- if errorlevel 1 (
- echo 文件存在
- ) else (
- echo 文件不存在
- )
- )
复制代码
作者: thp2008 时间: 2023-8-11 14:04
最终版本:- @echo off
- echo.
- echo 探测WinRAR下载地址
- echo.
- set /p year=请输入要探测的年份,例如:2023 :
- echo.
- set /p yue=请输入要探测的月份(必须是两位输入,不足补0,例如:08):
- echo.
- set /p banben=请输入要探测的WinRAR版本,例如:623 :
- echo.
- echo 要探测的WinRAR下载地址为:https://www.win-rar.com/fileadmin/winrar-versions/sc/sc%year%%yue%01---%year%%yue%31/rrlb/winrar-x64-%banben%sc.exe
- echo.
- echo 探测中,请稍后......
- echo.
- set "out="
- FOR /L %%A IN (2023%yue%01,1,2023%yue%31) DO (
- 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"
- if defined out goto exit_label
- )
- :exit_label
- if defined out (
- echo;第1个有效链接:%out%
- ) else echo;未找到有效链接
- echo.
- echo.
- 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
不使用第三方工具的版本:- @echo off
- echo.
- echo 探测WinRAR下载地址
- echo.
- set /p year=请输入要探测的年份,例如:2023 :
- echo.
- set /p yue=请输入要探测的月份(必须是两位输入,不足补0,例如:08):
- echo.
- set /p banben=请输入要探测的WinRAR版本,例如:623 :
- echo.
- echo 要探测的WinRAR下载地址为:https://www.win-rar.com/fileadmin/winrar-versions/sc/sc%year%%yue%01---%year%%yue%31/rrlb/winrar-x64-%banben%sc.exe
- echo.
- echo 探测中,请稍后......
- echo.
- setlocal enabledelayedexpansion
- for /l %%i in (101,1,131) do (
- set "ThisDay=%%i"
- 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"
- if errorlevel 1 (
- echo 找到有效链接:https://www.win-rar.com/fileadmin/winrar-versions/sc/sc%year%%yue%!ThisDay:~1!/rrlb/winrar-x64-%banben%sc.exe & goto end
- ) else (
- echo.
- )
- )
- echo.
- :end
- echo.
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |