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

[文本处理] 自动监控文件名的批处理

本帖最后由 thp2008 于 2021-3-17 10:15 编辑

下载地址列表的文本文件
wwwlist.txt
https://www.ssd.com/view_video.php?viewkey=asdkjgfjdsfglsldaglk
https://www.ssd.com/view_video.php?viewkey=safdfsdaffsfdsldaglk
https://www.ssd.com/view_video.php?viewkey=dfsgdfasdfffgdaglk
https://www.ssd.com/view_video.php?viewkey=fas435dgddghdf
https://www.ssd.com/view_video.php?viewkey=gfd6w45sfsdf
https://www.ssd.com/view_video.php?viewkey=fghhrt4554trshthr
https://www.ssd.com/view_video.php?viewkey=fdggfds45w54y
https://www.ssd.com/view_video.php?viewkey=ggfdhdgfd5
https://www.ssd.com/view_video.php?viewkey=fbbgfhhgfdfh5
https://www.ssd.com/view_video.php?viewkey=fdfggfhh4xgfxfgfr

下载保存的目录
F:\downmp4
下面没有子目录,都是自动下载的.mp4文件,文件名乱七八槽,有中文,符号,英文,数字,组合,长度不一,最长的文件名,估计得有150个左右的字符,汗,但所有的文件名里,一定包含一个字符串,这个字符串,来自已上面的wwwlist.txt,下载列表,最后的那个字符串。因为这个字符串,并非下载的文件名,只是下载.m3u8的列表,下载程序会自动合成,实际的文件名乱七八槽,但是我们不用理这些文件名,我是大批量下载,所以需要自动检查那些链接下载成功了,那些没有下载成功。所有的下载链接“https://www.ssd.com/view_video.php?viewkey=”这部分全是固定不变的,都是一样的,只是这里举例我替换了。

批处理的需求:
一、将wwwlist.txt,下载列表的,最后的字符串提取出来,(就是viewkey=之后的那部分)做为变量A。
二、需要写个批处理监视这个目录下的所有文件名后缀,每隔10秒,检查一下F:\downmp4所有的文件名的后缀名,结合变量A,就是检测所有文件名中包含变量A的后缀名是.mp4,还是.mp4.part,
      1、如果根据变量A,检测到后缀名是.mp4就显示,echo 变量A  下载完成
      2、如果根据变量A,检测到后缀名是.mp4.part就显示,echo 变量A  未完成           
      3、如果根据变量A,检测到后缀名是.mp4.part,请把这个文件,完整的文件名全部显示出来。
           第3点,单独,可以通过下列命令实现 dir /b | findstr /i "变量A"
      4、如果根据变量A,检测到后缀名是.mp4.part,就根据“变量A”的字符串,到wwwlist.txt,查找,并显示出字符串所在的整行。
           例如查到包含fghhrt4554trshthr字符串的文件名,后缀是.mp4.part的话,就去wwwlist.txt查找fghhrt4554trshthr字符串所以的行,https://www.ssd.com/view_video.php?viewkey=fghhrt4554trshthr,并将这一行作为变量B显示出来。echo 变量B
           第4点,单独,可以通过下列命令实现。type wwwlist.txt | findstr /i "变量A" 或者 findstr "[变量A]" wwwlist.txt'  但不会整合,并将结果如何附于变量B。
为什么我需要将这一些作为变量B呢,因为对这些下载不成功的,我会套进另一个批处理,再重新下载一便。

这个监视批处理,一直循环运行,每10秒检查一次,除非我手工关掉它。

不知道,我有没有描述清楚,感谢各位大神!

--------------------------------------------------------------------------------------------------------------------
补充一个问题:

F:\dl-down>dl-down.exe https://www.ssd.com/view_video.php?viewkey=sh6ae3e235skhjw
[SSD] sh6ae3e235skhjw: Downloading pc webpage
[SSD] sh6ae3e235skhjw: Downloading m3u8 information
[SSD] sh6ae3e235skhjw: Downloading m3u8 information
[SSD] sh6ae3e235skhjw: Downloading m3u8 information
[download] Destination: Tom we apple jump on desktop-sh6ae3e235skhjw.mp4
[download] 100% of 4232.77MiB in 01:22

在这个示例中,我如何将[download] Destination: 后面的文件完整名(此文件名有中文,符号,英文,数字,组合,长度不一,最长的文件名,估计得有150个左右的字符),提取成变量C,应该如何写批处理。

for /f "tokens=2 delims=:" %%i in (dl-down.exe https://www.ssd.com/view_video.php?viewkey=sh6ae3e235skhjw | findstr "[download] Destination:"') do (
    set "变量C=%%i"
echo “变量C”
我在网上搜了个类似的,但是不太懂语法,改了之后,运行不成功,说此时不应有 |。

回复 2# netdzb


   看短消息

TOP

本帖最后由 thp2008 于 2021-3-15 12:29 编辑

是的,是临时文件,因为我只是在下载完成后检查文件名,如果后缀名是.mp4.part就表示,下载过程中出错了。我需要重新下载,因为下载的量实在太大,所以想弄个批处理,这样减少很多工作。对于下载中的文件,也是这个后缀,但是目录不同,没有关系,不会误判的,因为我是用了多个批处理,协同完成这个工作的。

TOP

回复 1# thp2008

你那个下载工具dl-down能否发出来一下?
现在只能猜测你下载的临时文件是.part的。

TOP

返回列表