Board logo

标题: [其他] 怎么用批处理下载客户端? [打印本页]

作者: q9339    时间: 2023-4-21 16:12     标题: 怎么用批处理下载客户端?

怎么用批处理脚本下载 网站  https://shop.ele.me/apps/pc/?t=ls-pc  或者  https://shadow.elemecdn.com/crayfish/napos-app-download/lingshou/pc    里的exe文件呢 ?
主要用于每次网站更新客户端的时候,  手动点击更新, 因为 客户端不可以在线更新, 每次更新链接都会有变化, 想通过脚本自动获取最新的下载地址, 实现手动更新。
作者: czjt1234    时间: 2023-4-21 16:33

我试了下,你这个网址好象还要转向,不是最终的下载链接

用最终下载链接的话可以这样
  1. @echo off
  2. rem 另存为 ANSI 编码
  3. echo 正在下载,请稍等……
  4. certutil.exe -urlcache -f https://alsc-rtail-merchant-pc-zbprod-zb1-oss-2.oss-accelerate.aliyuncs.com/electron-ebai-config/eleme-retail-6.0.3-win-ia32-setup.exe aliyuncs_setup.exe
  5. echo 下载完成
  6. pause
复制代码

作者: q9339    时间: 2023-4-21 16:35

本帖最后由 q9339 于 2023-4-21 16:36 编辑
我试了下,你这个网址好象还要转向,不是最终的下载链接

用最终下载链接的话可以这样
czjt1234 发表于 2023-4-21 16:33





怎么让脚本自动读取呢 ?  而不是 人为操作 找到链接。。

我发现刚才的链接都是旧的,   用这个链接可以吗?

https://market.m.taobao.com/app/eleme_nr_bfe_retail/eb_download/index.html
作者: czjt1234    时间: 2023-4-21 20:35

获取真实下载链接,这个有点难了,我是不会,你可以发到付费求助区问问

要不你加个收藏夹,或网址的快捷方式,点开网页再点下载
不会比直接批处理下载慢
作者: idwma    时间: 2023-4-21 22:43

大概像这样
  1. powershell "$a=iwr https://nr.ele.me/eleme_nr_bfe_retail/eb_download/config/download;iwr $a.downloadUrl -outfile ($a.downloadUrl -replace '.+/')"
复制代码

作者: buyiyang    时间: 2023-4-21 22:48

http://www.bathome.net/viewthread.php?tid=62770&highlight=%BB%F9%D3%DA
参考这个操作浏览器,先下好对应的selenium库文件和edge驱动程序
  1. <# :
  2. cls&@echo off
  3. set "url=https://market.m.taobao.com/app/eleme_nr_bfe_retail/eb_download/index.html"
  4. set "de=C:\A\B"
  5. rem 以上设置网址和下载目录
  6. cd /d "%~dp0"
  7. powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::GetEncoding('GB2312')))) -Args '%url%','%de%'
  8. exit
  9. #>
  10. using namespace 'OpenQA.Selenium'
  11. Get-ChildItem '*.dll' | % {[void][System.Reflection.Assembly]::LoadFile($_.FullName)}
  12. $edge = [Edge.EdgeDriver]::new()
  13. $edge.Url = $args[0]
  14. sleep 1
  15. $href = $edge.FindElement([by]::classname('gray-btn')).GetAttribute('href')
  16. Write-Host $href
  17. $edge.Close()
  18. $edge.Dispose()
  19. Start-BitsTransfer -Source $href -Destination $args[1]
复制代码

作者: Batcher    时间: 2023-4-22 19:36

回复 5# idwma


    你的电脑上用这个方法测试3楼链接能成功么?
作者: idwma    时间: 2023-4-22 19:54

回复 7# Batcher


    之前是用F11看的,3楼的链接里是调用这个来获得下载地址的吧

作者: buyiyang    时间: 2023-4-22 22:19

回复 5# idwma


    downloadUrl似乎是在Content里的
  1. powershell -c "$downloadUrl = iwr 'https://nr.ele.me/eleme_nr_bfe_retail/eb_download/config/download' | ConvertFrom-Json | Select-Object -ExpandProperty downloadUrl;iwr $downloadUrl -outfile ($downloadUrl -replace '.+/')"
复制代码

作者: Batcher    时间: 2023-4-23 10:38

回复 8# idwma


    不知道是不是我理解有问题,楼主的需求是使用3楼链接下载,不要人为操作找到链接。
作者: idwma    时间: 2023-4-23 15:51

回复 10# Batcher


    是我理解错了
作者: q9339    时间: 2023-4-23 16:36

大概像这样
idwma 发表于 2023-4-21 22:43



    复制到cmd 运行,  报错。。 如下:


无法将“iwr”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼
写,如果包括路径,请确保路径正确,然后重试。
所在位置 行:1 字符: 7
+ $a=iwr <<<<  https://nr.ele.me/eleme_nr_bfe_retail/eb_download/config/downloa
d;iwr $a.downloadUrl -outfile ($a.downloadUrl -replace '.+/')
    + CategoryInfo          : ObjectNotFound: (iwr:String) [], CommandNotFound
   Exception
    + FullyQualifiedErrorId : CommandNotFoundException

无法将“iwr”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼
写,如果包括路径,请确保路径正确,然后重试。
所在位置 行:1 字符: 77
+ $a=iwr https://nr.ele.me/eleme_nr_bfe_retail/eb_download/config/download;iwr
<<<<  $a.downloadUrl -outfile ($a.downloadUrl -replace '.+/')
    + CategoryInfo          : ObjectNotFound: (iwr:String) [], CommandNotFound
   Exception
    + FullyQualifiedErrorId : CommandNotFoundException
作者: q9339    时间: 2023-4-23 16:37

参考这个操作浏览器,先下好对应的selenium库文件和edge驱动程序
buyiyang 发表于 2023-4-21 22:48



    不好意思啊, 我这边的 win7 系统, 还有更好的办法吗 ?
作者: q9339    时间: 2023-4-23 16:38

回复  idwma


    downloadUrl似乎是在Content里的
buyiyang 发表于 2023-4-22 22:19



    运行报错。。。 报错如下:




无法将“iwr”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼
写,如果包括路径,请确保路径正确,然后重试。
所在位置 行:1 字符: 19
+ $downloadUrl = iwr <<<<  'https://nr.ele.me/eleme_nr_bfe_retail/eb_download/c
onfig/download' | ConvertFrom-Json | Select-Object -ExpandProperty downloadUrl;
iwr $downloadUrl -outfile ($downloadUrl -replace '.+/')
    + CategoryInfo          : ObjectNotFound: (iwr:String) [], CommandNotFound
   Exception
    + FullyQualifiedErrorId : CommandNotFoundException

无法将“iwr”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼
写,如果包括路径,请确保路径正确,然后重试。
所在位置 行:1 字符: 154
+ $downloadUrl = iwr 'https://nr.ele.me/eleme_nr_bfe_retail/eb_download/config/
download' | ConvertFrom-Json | Select-Object -ExpandProperty downloadUrl;iwr <<
<<  $downloadUrl -outfile ($downloadUrl -replace '.+/')
    + CategoryInfo          : ObjectNotFound: (iwr:String) [], CommandNotFound
   Exception
    + FullyQualifiedErrorId : CommandNotFoundException
作者: jyswjjgdwtdtj    时间: 2023-4-23 18:24

为什么不用internet.application?起码现在的网页还是支持ie11的吧
作者: idwma    时间: 2023-4-23 18:53

win7试试这个ai给的方法
  1. #@&cls&powershell "type '%~f0'|out-string|iex"&pause&exit
  2. $wc = New-Object System.Net.WebClient
  3. $wc.DownloadString('https://nr.ele.me/eleme_nr_bfe_retail/eb_download/config/download') -match 'http[^"]+'
  4. $sourceStream = $wc.OpenRead($matches[0])
  5. $targetStream = new-object System.IO.FileStream(("$pwd\"+($matches[0]-replace'.+/')), [System.IO.FileMode]::Create)
  6. $gzipStream = new-object System.IO.Compression.GZipStream($sourceStream, [System.IO.Compression.CompressionMode]::Decompress)
  7. $buffer = new-object byte[](1024)
  8. while($true)
  9. {
  10.   $read = $gzipStream.Read($buffer, 0, 1024)
  11.   if($read -le 0){ break }
  12.   $targetStream.Write($buffer, 0, $read)
  13. }
  14. $gzipStream.Close()
  15. $targetStream.Close()
  16. $sourceStream.Close()
复制代码

作者: jyswjjgdwtdtj    时间: 2023-4-23 19:06

  1. set ie=createobject("internetexplorer.application")
  2. ie.visible=false
  3. ie.navigate "https://shop.ele.me/apps/pc/?t=ls-pc"
  4. do until ie.readystate=4
  5. wscript.sleep 100
  6. loop
  7. url=ie.document.getelementsbyclassname("pc-download")(0).getelementsbytagname("a")(0).href
  8. Set http = CreateObject("Msxml2.XMLHTTP")
  9. Set ado = createobject("Adodb.Stream")
  10. with http
  11. .open "GET",url,false
  12. .send
  13. ado.Type =1
  14. ado.Open
  15. ado.Write .responsebody
  16. ado.SaveToFile "1.exe"
  17. ado.Close
  18. end with
  19. set ws=createobject("wscript.shell")
  20. ws.run "1.exe"
复制代码
简单粗暴 不动脑子 直接用浏览器找好吧
作者: jyswjjgdwtdtj    时间: 2023-4-23 19:06

实测可用
绝对好用 速度也不慢
作者: jyswjjgdwtdtj    时间: 2023-4-23 19:12

回复 16# idwma


    这个不能用额
作者: idwma    时间: 2023-4-23 21:22

回复 19# jyswjjgdwtdtj


    可能不通用吧
作者: q9339    时间: 2023-4-24 15:35

win7试试这个ai给的方法
idwma 发表于 2023-4-23 18:53



    这个文件下载 在哪里的啊?   运行了  按了 回车 最后好像 什么都没。。
作者: idwma    时间: 2023-4-24 19:57

回复 21# q9339


下在当前目录,没有就不知道什么原因了
作者: jyswjjgdwtdtj    时间: 2023-4-24 21:22

回复 20# idwma


    你不去搞个xp或者2000应该没大问题吧……我也不知道
我在mshta(ie7)试了一下 卡了好久才报错……
作者: q9339    时间: 2023-4-26 14:37

windows下 curl就是一个单文件exe 你放到同级目录里面就可以了

@echo off
setlocal enabledelayedexpansion
curl -k "https://nr.ele.me/eleme_nr_bfe_retail/eb_download/config/download" -o "elme.txt"
for /f tokens^=16^ delims^=^" %%i in (elme.txt) do bitsadmin /transfer n "%%i" "D:\elme.exe"
del elme.txt
pause

把curl和这个BAT放到同一个目录下运行bat就行
作者: 77七    时间: 2023-4-26 16:07

本帖最后由 77七 于 2023-4-26 16:22 编辑

回复 24# q9339


  
  1. @echo off
  2. for /f tokens^=16delims^=^" %%a in ('curl "https://nr.ele.me/eleme_nr_bfe_retail/eb_download/config/download"') do (
  3.         curl -O "%%a"
  4. )
  5. pause
复制代码

作者: mzzyb    时间: 2023-4-26 16:21

为什么不用internet.application?起码现在的网页还是支持ie11的吧
jyswjjgdwtdtj 发表于 2023-4-23 18:24



    域服务器更新域成员的客户端好像,不然为什么要求用cmd来写下载更新客户端,只是1台电脑,点几下都完成了~~~
作者: jyswjjgdwtdtj    时间: 2023-4-26 16:57

回复 26# mzzyb


    ie支持自动化




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