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


可以但要套一层循环
现在这样不好吗可以少发一次网络请求

TOP

回复 24# idwma


    这个limit能获取实际的数吗?

TOP

回复 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
复制代码

TOP

本帖最后由 lonron 于 2023-5-8 22:11 编辑

回复 18# idwma


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

1、是需要在遍历的开始就先输出一行根目录ID。(根目录ID在path字段里可以获取,但是子文件夹path字段里的feliId是包括自身以及所有上级目录ID数据的,就是目录树。)
2、是这个页面有一个条数限制,默认是30条数据。(格式是在 c=list 后面加上 &limit= 条数,count 字段是当前目录的文件和文件夹总数。)
3、是这个网站好像对抓取数据有做过载保护,所以需要每次获取一条ID后延迟一秒。(测试过一秒一条基本安全没出现过报错。)

TOP

回复 21# czjt1234


    隔行如隔山啊,同样是脚本语言,对PS和P实在很吃力,有的问题用pascal就容易多了

TOP

回复 20# lonron


    据说程序员最怕的就是改需求

QQ 20147578

TOP

回复 18# idwma


    万分感谢,终于解决了,纠结了我好几天了 T_T,我光改问题说明想让大家看清楚,就改了好几次。

TOP

回复 17# czjt1234


    看前辈们用过递归刚好练习一下

TOP

回复 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

评分人数

TOP

回复 15# idwma


    这个牛叉了,我试了用vbs,写了好几十行,没高兴写下去

QQ 20147578

TOP

回复 15# idwma


    是我要的效果,非常感谢,另外问下,是否有纯P的方法?

TOP

  1. #@&cls&powershell "type '%~0'|out-string|iex"&pause&exit
  2. $global:a='https://189.ly93.cc/api.php?c=list&shareCode=VVFnmuRviQRj&accessCode=?'
  3. $global:b='https://189.ly93.cc/VVFnmuRviQRj/{0}?accessCode=?'
  4. function test($id){
  5.     irm ($global:a+'&fileId='+$id)|%{
  6. $_.data|%{
  7.     if($_.isFolder){$_.fileId;test($_.fileId)}
  8. }
  9.     }
  10. }
  11. test|sc test.txt
复制代码
1

评分人数

TOP

  1. #@&cls&powershell "type '%~0'|out-string|iex"&pause&exit
  2. $global:a='https://189.ly93.cc/api.php?c=list&shareCode=3UBZ3ei6NJJz&accessCode=?'
  3. $global:b='https://189.ly93.cc/3UBZ3ei6NJJz/{0}?accessCode=?'
  4. function test($id){
  5.     irm ($global:a+'&fileId='+$id)|%{
  6. $path=($_.path|%{$_.fileName}) -join '\'
  7.         md $path
  8. $_.data|%{
  9.     if($_.isFolder){test($_.fileId)}else{
  10. curl --ssl-no-revoke -Lo ($path+'\'+$_.fileName) ($global:b -f $_.fileId)
  11.     }
  12. }
  13.     }
  14. }
  15. test
复制代码

TOP

回复 12# pd1


    他们的实际应用关系就是红色加粗部分的:

父(子)文件夹ID都是以第一个网页最后面加&fileId=xxxx呈现的。(可以理解为类似本地情况下,进入某个文件夹。)
文件ID就是在要下载的时候要用,在curl后面的下载地址里面呈现的。

TOP

当“isFolder”参数为true时表示子文件夹ID、为false时表示文件ID。
我是没理解两种情况你要怎么分开处理?
分别怎么处理要给出来

TOP

返回列表