标题: [文本处理] [已解决]求随机或顺序从文本中依次取10个变量的处理方法 [打印本页]
作者: thp2008 时间: 2021-3-31 11:11 标题: [已解决]求随机或顺序从文本中依次取10个变量的处理方法
本帖最后由 thp2008 于 2021-3-31 14:05 编辑
我有个批处理,就是每隔20秒,就从List.txt中,读取一行网址,打开它。但是List.txt中的数量相当大,这个批处理,会从头打开到结束,现在,我想控制一下,每次,只想随机或顺序取其中的10个,做为变量打开它,应该如何实现。
(如果随机不好处理的话,也可以顺序的方式,比如先打开1--10(每个网页间隔20秒);每组间隔10分钟,TIMEOUT /T 600 /NOBREAK,第二组打开11-20,如此循环,只到完成,最后如果不够10个,剩几个就打开几个。)
在下一组打开前,结束前一组- taskkill /FI "imagename eq chrome*" /f
复制代码
- echo 每20秒打开一个网页
- for /f "delims=" %%A in (List.txt) do (
- chrome.exe "%%A"
- echo chrome.exe "%%A"
- TIMEOUT /T 20 /NOBREAK
- )
复制代码
作者: went 时间: 2021-3-31 11:31
- @echo off & cd /d "%~dp0"
- setlocal enabledelayedexpansion
- set "n=0"
- for /f "delims=" %%i in (List.txt) do (
- echo chrome.exe "%%i"
- set /a "n+=1"
- if !n! lss 10 (
- REM 暂停20秒
- timeout /t 20 /nobreak
- ) else (
- REM 暂停10分钟
- timeout /t 600 /nobreak
- REM 结束chrome
- taskkill /FI "imagename eq chrome*" /f
- set "n=0"
- )
- )
- pause&exit
复制代码
作者: thp2008 时间: 2021-3-31 11:38
回复 2# went
大佬,你这个写的很好,感谢您的帮助,但是,有一点小细节,就是
for /f "delims=" %%i in (List.txt) do (
echo chrome.exe "%%i"
应该是先执行一次,chrome.exe "%%i",再echo chrome.exe "%%i".这里漏了,变成只显示了。应该怎样加一条chrome.exe "%%i",麻烦了。
作者: went 时间: 2021-3-31 11:40
chrome.exe "%%i"
echo chrome.exe "%%i"
作者: thp2008 时间: 2021-3-31 11:48
回复 4# went
哦,直接加上就好了,感谢!
我先来测试一下,配合一下,我的刷新脚本,我来试试先。
作者: thp2008 时间: 2021-3-31 12:04
回复 2# went
老大,我测试了一下,测试了几次,这个顺序变量
第一组10个打开没有问题,结束,也没有问题。
第二组打开第1个后,就停了,不动了。不知道是怎么会事。我重试了几次,都这样。我把ECHO ON打开,也试了,没有报错,只是不动了。
这是什么原因。
作者: went 时间: 2021-3-31 12:12
回复 6# thp2008
截图
作者: thp2008 时间: 2021-3-31 12:15
等待 0 秒,按 CTRL+C 退出 ...
成功: 已终止进程 "chrome.exe",其 PID 为 1740。
成功: 已终止进程 "chrome.exe",其 PID 为 9468。
成功: 已终止进程 "chrome.exe",其 PID 为 3728。
错误: 无法终止进程 "chrome.exe",其 PID 为 1764。
原因: 没有此任务的实例在运行。
成功: 已终止进程 "chrome.exe",其 PID 为 11736。
成功: 已终止进程 "chrome.exe",其 PID 为 11936。
错误: 无法终止进程 "chrome.exe",其 PID 为 13728。
原因: 没有此任务的实例在运行。
成功: 已终止进程 "chrome.exe",其 PID 为 13340。
成功: 已终止进程 "chrome.exe",其 PID 为 6156。
成功: 已终止进程 "chrome.exe",其 PID 为 9856。
成功: 已终止进程 "chrome.exe",其 PID 为 476。
成功: 已终止进程 "chrome.exe",其 PID 为 1268。
成功: 已终止进程 "chrome.exe",其 PID 为 14584。
成功: 已终止进程 "chrome.exe",其 PID 为 14024。
成功: 已终止进程 "chrome.exe",其 PID 为 1936。
成功: 已终止进程 "chrome.exe",其 PID 为 7440。
成功: 已终止进程 "chrome.exe",其 PID 为 12460。
成功: 已终止进程 "chrome.exe",其 PID 为 9772。
错误: 无法终止进程 "chrome.exe",其 PID 为 6748。
原因: 没有此任务的实例在运行。
成功: 已终止进程 "chrome.exe",其 PID 为 15084。
E:\PLDown>(
chrome.exe "https://www.baidu.com/"
echo chrome.exe "https://www.baidu.com/"
set /a "n+=1"
if !n! LSS 10 (
REM 暂停20秒
timeout /t 10 /nobreak
) else (
REM 暂停10分钟
timeout /t 60 /nobreak
REM 结束chrome
taskkill /im "chrome.exe" /f
set "n=0"
)
)
作者: thp2008 时间: 2021-3-31 12:16
就停在这里不动了,我运行了几次都这样,截图超过50K,不行。
作者: thp2008 时间: 2021-3-31 12:17
第11个打开后,就不动了,第12次就不行了。
作者: went 时间: 2021-3-31 12:29
测试正常,我也不知道怎么回事
作者: thp2008 时间: 2021-3-31 12:55
本帖最后由 thp2008 于 2021-3-31 13:11 编辑
我试出来了,原来是从第二组开始,每打开一个,就要关掉这个浏览器,才能再打开下一个。不关掉,就一直停在那里,不出现倒计时,只要一关掉,就会出现倒计时,然后又打开下一个了。后面的全是这样,我一直关,就一直出现倒计时,一直打开,只要我不关浏览器了,就不打开了,停在那,不动了。
然后,有时候,我一运行这个批处理,打开第一个,就不动了,也是要关掉浏览器之后,才能继续,退出,重试几次,又可以出现倒计时,自动打开10个了,到11个后就不动了,要关浏览器,感觉像是批处理不稳定的样子。怎么会有这种情况。这是怎么会事。好怪。
如果这种方式,行不通,那就帮我改成,逐个打开,就是每隔120秒打开一个,打开下一个前,结束浏览器,然后再打开下一个。一直循环。
Windows 10 64位,20H2
作者: thp2008 时间: 2021-3-31 14:05
感谢went大佬的帮助,已经可以了,最终版本。已通过测试,没有问题了。- @echo off & cd /d "%~dp0"
- setlocal enabledelayedexpansion
- set "n=0"
- for /f "delims=" %%i in (List.txt) do (
- start "C:\Program Files\Google\Chrome\Application\chrome.exe" "%%i"
- echo chrome.exe "%%i"
- set /a "n+=1"
- if !n! lss 10 (
- REM 暂停20秒
- timeout /t 20 /nobreak
- ) else (
- REM 暂停10分钟
- timeout /t 600 /nobreak
- REM 结束chrome
- taskkill /FI "imagename eq chrome*" /f
- set "n=0"
- )
- )
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |