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

[文本处理] [已解决]批处理如何遍历网页文件夹ID并输出至文本?

[复制链接]
 楼主| 发表于 2023-5-8 18:26:24 | 显示全部楼层
回复 15# idwma


    是我要的效果,非常感谢,另外问下,是否有纯P的方法?
发表于 2023-5-8 18:34:06 | 显示全部楼层
回复 15# idwma


    这个牛叉了,我试了用vbs,写了好几十行,没高兴写下去
发表于 2023-5-8 18:58:10 | 显示全部楼层
回复 16# lonron

是不是像一楼的放到bat的for里
  1. @echo off
  2. for /f "delims=" %%a in ('powershell "function test($id){(irm ('https://189.ly93.cc/api.php?c=list&shareCode=VVFnmuRviQRj&accessCode=?'+'&fileId='+$id)).data|%%{if($_.isFolder){$_.fileId;test($_.fileId)}}};test"') do (
  3.         echo %%a>>test.txt
  4. )
  5. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
lonron + 1 感谢帮助

查看全部评分

发表于 2023-5-8 19:00:19 | 显示全部楼层
回复 17# czjt1234


    看前辈们用过递归刚好练习一下
 楼主| 发表于 2023-5-8 19:21:37 | 显示全部楼层
回复 18# idwma


    万分感谢,终于解决了,纠结了我好几天了 T_T,我光改问题说明想让大家看清楚,就改了好几次。
发表于 2023-5-8 19:39:45 | 显示全部楼层
回复 20# lonron


    据说程序员最怕的就是改需求
 楼主| 发表于 2023-5-8 19:43:20 | 显示全部楼层
回复 21# czjt1234


    隔行如隔山啊,同样是脚本语言,对PS和P实在很吃力,有的问题用pascal就容易多了
 楼主| 发表于 2023-5-8 21:02:29 | 显示全部楼层
本帖最后由 lonron 于 2023-5-8 22:11 编辑

回复 18# idwma


    老师,不好意思,刚刚认真测试代码后发现有三个问题被我忽略了。还恳请您再次帮忙修改下,谢谢:

1、是需要在遍历的开始就先输出一行根目录ID。(根目录ID在path字段里可以获取,但是子文件夹path字段里的feliId是包括自身以及所有上级目录ID数据的,就是目录树。)
2、是这个页面有一个条数限制,默认是30条数据。(格式是在 c=list 后面加上 &limit= 条数,count 字段是当前目录的文件和文件夹总数。)
3、是这个网站好像对抓取数据有做过载保护,所以需要每次获取一条ID后延迟一秒。(测试过一秒一条基本安全没出现过报错。)
发表于 2023-5-8 22:59:41 | 显示全部楼层
回复 23# lonron
  1. @echo off
  2. for /f "delims=" %%a in ('powershell "function test($id){irm ('https://189.ly93.cc/api.php?c=list&limit=99999999999&shareCode=VVFnmuRviQRj&accessCode=?'+'&fileId='+$id)|%%{if(!$global:a){($global:a=$_.path.fileId)}$_.data|%%{if($_.isFolder){$_.fileId;sleep -m 500;test($_.fileId)}}}};test"') do (
  3.         echo %%a>>test.txt
  4. )
  5. pause
复制代码
 楼主| 发表于 2023-5-8 23:04:14 | 显示全部楼层
回复 24# idwma


    这个limit能获取实际的数吗?
发表于 2023-5-8 23:10:33 | 显示全部楼层
回复 25# lonron


可以但要套一层循环
现在这样不好吗可以少发一次网络请求
 楼主| 发表于 2023-5-8 23:16:00 | 显示全部楼层
回复 26# idwma


    条数这个我确实一开始也这么想的,不过我本来就是拿实例学习的,如果老师您方便,还希望您能帮我修改下,真的非常感谢!
发表于 2023-5-8 23:36:06 | 显示全部楼层
  1. @echo off
  2. for /f "delims=" %%a in ('powershell "function test($id){$z=irm ('https://189.ly93.cc/api.php?c=list&shareCode=VVFnmuRviQRj&accessCode=?'+'&fileId='+$id);$z='https://189.ly93.cc/api.php?c=list&limit='+$z.count+'&shareCode=VVFnmuRviQRj&accessCode=?'+'&fileId='+$id;sleep 1;irm $z|%%{if(!$global:a){($global:a=$_.path.fileId)}$_.data|%%{if($_.isFolder){$_.fileId;sleep -m 500;test($_.fileId)}}}};test"') do (
  3.         echo %%a>>test.txt
  4. )
  5. pause
复制代码
 楼主| 发表于 2023-5-8 23:48:42 | 显示全部楼层
回复 28# idwma


    非常感谢!!!最后有一个小小的疑问,就是单独把ps这段放入控制台的时候,我发现第一条和第二条是同时出现的,其他都是按固定的延迟显示出来,还有就是抓取ID中途我ctrl+c终止,重新运行这段代码时,根目录的ID不会读取了这是为什么?
发表于 2023-5-9 14:32:46 | 显示全部楼层
一二条在同一个页面
重置变量$a
  1. powershell "$a=0;function test($id){$z=irm ('https://189.ly93.cc/api.php?c=list&shareCode=VVFnmuRviQRj&accessCode=?'+'&fileId='+$id);$z='https://189.ly93.cc/api.php?c=list&limit='+$z.count+'&shareCode=VVFnmuRviQRj&accessCode=?'+'&fileId='+$id;sleep 1;irm $z|%%{if(!$global:a){($global:a=$_.path.fileId)}$_.data|%%{if($_.isFolder){sleep -m 500;$_.fileId;test($_.fileId)}}}};test"
复制代码

评分

参与人数 1技术 +1 收起 理由
lonron + 1 感谢帮助

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 22:47 , Processed in 0.022618 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表