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

[文本处理] [已解决]批处理如何保存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想了半天都没有很好的方法,该如何写?
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

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

TOP

回复 2# wanghan519

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

TOP

回复 3# lonron


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

TOP

回复 4# wanghan519


    是这意思,也就是说“| sc 'C:\Users\Lonron\Desktop\test.bmp' -encoding byte”这段其实我是用来测试的,可以忽略。

TOP

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

评分人数

    • lonron: 非常感谢,是我要的效果技术 + 1

TOP

返回列表