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

[文本处理] [已解决]批处理如何根据关键字删除长字符串中的部分字段?

本帖最后由 thp2008 于 2023-8-19 14:07 编辑

示例:
  1. https://finder.video.aa.com/251/20302/stodownload?encfilekey=Cvvj5Ix3eez3Y79SxtvVL0L7CkPM6dFibFeI6caGYwFEMUEDjJPnm3dpFjWr1DUTibEJZs7dZelyxnb1AZlibiaiaAuZWUvXV471nfib0ozqNo7aEnBKFscXxia6YM0IGCekSHfLvIBnkHibclkAX0S14Qic0Bg&a=1&bizid=1023&dotrans=0&hy=SH&idx=1&m=90a771280dc7b66386def1fb66c46cb6&upid=500210&web=1&token=cztXnd9GyrH3ZYFfca0mbJ7UiaFibKcqbFBr3OibA3RwKG1obh80ia6mn8GjL4JMapTN7CEPCWRU3MQLBlgoVQVcVn8zxAtuX31dRzNb0mQfiaOHloPzkT77Hl72RfDdK2QWO&extg=10f002e&ftype=106&svrbypass=AAuL%2FQsFAAABAAAAAADCg%2FMPTMuTOhKqovDeZBAAAADnaHZTnGbFfAj9RgZXfw6V3j7vuys4AKMz%2Bp6pPCJ3ALOzRqRGs2rsGKiA0fNBNns%3D&svrnonce=1692332194&fexam=1&X-snsvideoflag=xW29
复制代码
  1. @echo off
  2. set /p zfc=请输入链接:
  3. 粘贴上面的示例字符串
  4. 批处理要实现的功能:自动将示例字符串中的,
  5. 1、20302替换成20304
  6. 2、将&a=1&bizid=1023&dotrans=0&hy=SH&idx=1&m=90a771280dc7b66386def1fb66c46cb6&upid=500210&web=1这一段删除
  7. 3、将最后这一段 &extg=10f002e&ftype=106&svrbypass=AAuL%2FQsFAAABAAAAAADCg%2FMPTMuTOhKqovDeZBAAAADnaHZTnGbFfAj9RgZXfw6V3j7vuys4AKMz%2Bp6pPCJ3ALOzRqRGs2rsGKiA0fNBNns%3D&svrnonce=1692332194&fexam=1&X-snsvideoflag=xW29也删除。
  8. 4、剩下的输出显示出来,并自动复制到剪贴板就好了。
复制代码
最终输出:
  1. https://finder.video.aa.com/251/20304/stodownload?encfilekey=Cvvj5Ix3eez3Y79SxtvVL0L7CkPM6dFibFeI6caGYwFEMUEDjJPnm3dpFjWr1DUTibEJZs7dZelyxnb1AZlibiaiaAuZWUvXV471nfib0ozqNo7aEnBKFscXxia6YM0IGCekSHfLvIBnkHibclkAX0S14Qic0Bg&token=cztXnd9GyrH3ZYFfca0mbJ7UiaFibKcqbFBr3OibA3RwKG1obh80ia6mn8GjL4JMapTN7CEPCWRU3MQLBlgoVQVcVn8zxAtuX31dRzNb0mQfiaOHloPzkT77Hl72RfDdK2QWO
复制代码
&a=
&idx=
&extg=
&svrbypass=
&svrnonce=
&fexam=
20302
encfilekey=
&token=
这些是固定不变的,其它的字符串是变化的。

只保留encfilekey和token本身和后面的部分。

请高手帮忙,谢谢!
1

评分人数

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

本帖最后由 thp2008 于 2023-8-19 16:43 编辑

感谢大家的帮助,太好用了,已成功下载几十部短视频,最终成品分享给大家。
  1. @echo off
  2. REM 脚本保存为ANSI编码格式
  3. echo.
  4. echo 视频号自动下载脚本
  5. set n=1
  6. REM 将下面的D:\WXVideo,换成你自已的视频号下载保存目录路径就好了。
  7. set mulu=D:\WXVideo
  8. if exist %mulu%\WX%n%.mp4 goto Jiance
  9. :start
  10. echo.
  11. set /p zfc=请输入或粘贴下载链接:
  12. echo.
  13. set "zfc=%zfc:/20302/=/20304/%"
  14. set "zfc=dl=%zfc%"
  15. for /l %%i in (1,1,31) do call :re %%i
  16. set "url=%dl%?encfilekey=%encfilekey%&token=%token%"
  17. if not exist "%mulu%\WX%n%.mp4" set "outfile=%mulu%\WX%n%.mp4"&goto :dl
  18. :dl
  19. echo 马上为您下载,请稍等......
  20. echo.
  21. curl -o "%outfile%" -k --connect-timeout 15 --max-time 720 "%url%"
  22. echo.
  23. echo 下载完成。
  24. set /a n=n+1
  25. goto start
  26. :Jiance
  27. cd /d "%mulu%"
  28. for /l %%s in (5000,-1,1) do (
  29. if exist "*%%s.mp4" (
  30. set /a n=%%s+1
  31. goto :start
  32. )
  33. )
  34. :re
  35. for /f "tokens=%1 delims=?&" %%i in ("%zfc%") do set "%%i"
复制代码

TOP

本帖最后由 thp2008 于 2023-8-19 14:14 编辑
buyiyang 发表于 2023-8-19 13:47


感谢,我稍微修改了一下,可以了。如果开始,能加一段自动检测D:\WXVideo\WX%n%.mp4 的所有WX*.mp4的最大值就好了,批处理每次运行的时候,自动从最大值的下一个数字开始,就完美了。
  1. @echo off
  2. set n=1
  3. if exist D:\WXVideo\WX%n%.mp4 goto Jiance
  4. :start
  5. echo.
  6. set /p zfc=请输入链接:
  7. echo.
  8. set "zfc=%zfc:/20302/=/20304/%"
  9. set "zfc=dl=%zfc%"
  10. for /l %%i in (1,1,31) do call :re %%i
  11. set "url=%dl%?encfilekey=%encfilekey%&token=%token%"
  12. if not exist "D:\WXVideo\WX%n%.mp4" set "outfile=D:\WXVideo\WX%n%.mp4"&goto :dl
  13. :dl
  14. curl -o "%outfile%" -k --connect-timeout 15 --max-time 360 "%url%"
  15. set /a n=n+1
  16. goto start
  17. :re
  18. for /f "tokens=%1 delims=?&" %%i in ("%zfc%") do set "%%i"
  19. :Jiance
  20. 自动检查D:\WXVideo\目录下的所有WX*.mp4的最大数值+1,并赋值给一个新的%n% (这一功能不能该如何实现)
  21. goto start
复制代码

TOP

  1. @echo off
  2. set /p zfc=
  3. set "zfc=%zfc:/20302/=/20304/%"
  4. set "zfc=dl=%zfc%"
  5. for /l %%i in (1,1,31) do call :re %%i
  6. set "url=%dl%?encfilekey=%encfilekey%&token=%token%"
  7. for /l %%i in (1,1,1000) do if not exist "D:\WXVideo\WX%%i.mp4" (set "outfile=D:\WXVideo\WX%%i.mp4"&goto :dl)
  8. :dl
  9. curl -o "%outfile%" -k --connect-timeout 15 --max-time 360 "%url%"
  10. pause&exit
  11. :re
  12. for /f "tokens=%1 delims=?&" %%i in ("%zfc%") do set "%%i"
复制代码
1

评分人数

TOP

至于如何复制到粘贴板上,自己搜一下论坛中的关键字应当能解决。
qixiaobin0715 发表于 2023-8-18 14:18


可能我描述有误,这条对我的示例是可以。

真实使用,需要修改一下,第四行才行。

最终如下:测试没有问题
  1. @echo off
  2. set /p zfc=please input:
  3. set "zfc=%zfc:/20302/=/20304/%"
  4. set "zfc=%zfc:&bizid=`&bizid%"
  5. set "zfc=%zfc:&token=`&token%"
  6. set "zfc=%zfc:&extg=`&extg%"
  7. for /f "tokens=1,3 delims=`" %%i in ("%zfc%") do echo,%%i%%j
  8. pause
复制代码

TOP

本帖最后由 thp2008 于 2023-8-19 12:17 编辑
回复  thp2008
可用gawk(  )实现
hfxiang 发表于 2023-8-18 17:00


hfxiang 老大,如果我不想输出到clip. 而是将结果输出到一个%URL% 的变量,应该怎么改一下。感谢!

我想将结果传递给下面这句:自动下载
  1. @echo off
  2. rem 脚本保存为ANSI编码格式
  3. :start
  4. set /p zfc=请输入链接:
  5. echo;"?%zfc%?"|gawk -v"RS=[?&]" "/stodownload/{sub(/20302/,\"20304\");printf $0 RT}/^encfilekey=/{printf $0 RT}/^token=/{printf $0}"|clip
  6. set /a n=1
  7. curl -o D:\WXVideo\WX%n%.mp4 --connect-timeout 15 --max-time 360 --ssl-no-revoke -X GET "%URL%"
  8. set /a n+1
  9. goto start
复制代码
另外,这个WX%n%.mp4 这个%n%,我想从1一直循环就一直累加,我如何设置成一个循环累加变量。

TOP

你是要下载微信视频号视频?处理后的url可以直接用curl下载
buyiyang 发表于 2023-8-18 14:39


是的,谢谢提示!

TOP

本帖最后由 hfxiang 于 2023-8-18 17:24 编辑

回复 1# thp2008
可用gawk( http://bcn.bathome.net/tool/5.1.0/gawk.exe )实现
  1. @echo off
  2. rem 脚本保存为ANSI编码格式
  3. set /p zfc=请输入链接:
  4. echo;"?%zfc%?"|gawk -v"RS=[?&]" "/stodownload/{sub(/20302/,\"20304\");printf $0 RT}/^encfilekey=/{printf $0 RT}/^token=/{printf $0}"|clip
复制代码
1

评分人数

    • thp2008: 感谢,完全满足技术 + 1

TOP

复制到粘贴板上,好像是这个命令:clip

TOP

你是要下载微信视频号视频?处理后的url可以直接用curl下载

TOP

本帖最后由 qixiaobin0715 于 2023-8-18 14:36 编辑
  1. @echo off
  2. set /p zfc=please input:
  3. set "zfc=%zfc:/20302/=/20304/%"
  4. set "zfc=%zfc:&a=`&a%"
  5. set "zfc=%zfc:&token=`&token%"
  6. set "zfc=%zfc:&extg=`&extg%"
  7. for /f "tokens=1,3 delims=`" %%i in ("%zfc%") do echo,%%i%%j
  8. pause
复制代码
至于如何复制到粘贴板上,自己搜一下论坛中的关键字应当能解决。
1

评分人数

    • thp2008: 感谢帮助,测试可以技术 + 1

TOP

返回列表