Board logo

标题: [文本处理] [已解决]批处理如何保存PowerShell中的值? [打印本页]

作者: lonron    时间: 2024-4-27 02:14     标题: [已解决]批处理如何保存PowerShell中的值?

本帖最后由 lonron 于 2024-4-27 19:57 编辑

https://api.7585.net.cn/qrcode/api.php?size=256&text=1
这个地址每次刷新二维码都会变化,也就是只能一次性获取rawcontentlength值和content值,不然就对应不上。
如代码:
  1. powershell "& {$qrcode=iwr 'https://api.7585.net.cn/qrcode/api.php?size=256&text=1';$qrcode.rawcontentlength;$qrcode.content | sc 'C:\Users\Lonron\Desktop\test.bmp' -encoding byte}"
复制代码
现需要的效果是:用bat的方式,将rawcontentlength的值先用来判断是否超过某个预设的值。
如果小于预设的值就获取content的内容然后用sc转成bmp格式下载到本地。如果大或等于就不作任何操作。(前提是不能将content的值输出文本,不然前面的判断大小就没有意义了)
用for想了半天都没有很好的方法,该如何写?
作者: wanghan519    时间: 2024-4-27 04:34

ps那一句也不行吧,返回再长它也是先下载到本地,可能是内存里,然后才有长度判断和内容
curl倒是有--max-filesize参数可以限制,且win10以后系统自带curl
需要更细致的控制可能需要编程语言那个细致的操作,而不是批处理这个级别的操作
作者: lonron    时间: 2024-4-27 09:46

回复 2# wanghan519

    curl和iwr不是一回事吗?iwr肯定是把数据先存在内存里,之所以要判断大小不是为了“限制下载”,是为了实例中后续的操作,主要是和硬盘有关。我PS这句只是让rawcontentlength值和content值同时对应,如果直接用dos的set变量不能对应上。
作者: wanghan519    时间: 2024-4-27 10:06

回复 3# lonron


    还是有区别的,curl到了限制就停止下载并报错,iwr总会下载完
没太理解,需要的是先下载到内存里,然后在内存里判断长度,然后写入硬盘就行吗,意思是只要不写入硬盘就行吗
作者: lonron    时间: 2024-4-27 10:27

回复 4# wanghan519


    是这意思,也就是说“| sc 'C:\Users\Lonron\Desktop\test.bmp' -encoding byte”这段其实我是用来测试的,可以忽略。
作者: WHY    时间: 2024-4-27 13:16

回复 1# lonron


    这样可以不?
  1. @echo off
  2. set "Len=380"
  3. powershell "$qrcode=iwr 'https://api.7585.net.cn/qrcode/api.php?size=256&text=1';if ($qrcode.rawcontentlength -lt %Len%){sc temp.bmp -Value $qrcode.content -Enc byte}"
  4. pause
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2