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

[文本处理] [已解决]批处理如何保存PowerShell中的值?

[复制链接]
发表于 2024-4-27 02:14:34 | 显示全部楼层 |阅读模式
本帖最后由 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想了半天都没有很好的方法,该如何写?

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2024-4-27 04:34:46 | 显示全部楼层
ps那一句也不行吧,返回再长它也是先下载到本地,可能是内存里,然后才有长度判断和内容
curl倒是有--max-filesize参数可以限制,且win10以后系统自带curl
需要更细致的控制可能需要编程语言那个细致的操作,而不是批处理这个级别的操作
 楼主| 发表于 2024-4-27 09:46:38 | 显示全部楼层
回复 2# wanghan519

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


    还是有区别的,curl到了限制就停止下载并报错,iwr总会下载完
没太理解,需要的是先下载到内存里,然后在内存里判断长度,然后写入硬盘就行吗,意思是只要不写入硬盘就行吗
 楼主| 发表于 2024-4-27 10:27:10 | 显示全部楼层
回复 4# wanghan519


    是这意思,也就是说“| sc 'C:\Users\Lonron\Desktop\test.bmp' -encoding byte”这段其实我是用来测试的,可以忽略。
发表于 2024-4-27 13:16:41 | 显示全部楼层
回复 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技术 +1 收起 理由
lonron + 1 非常感谢,是我要的效果

查看全部评分

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

本版积分规则

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

GMT+8, 2026-3-18 02:03 , Processed in 0.019095 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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