标题: [文本处理] [已解决]批处理如何根据关键字删除长字符串中的部分字段? [打印本页]
作者: thp2008 时间: 2023-8-18 12:29 标题: [已解决]批处理如何根据关键字删除长字符串中的部分字段?
本帖最后由 thp2008 于 2023-8-19 14:07 编辑
示例:- 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
复制代码
- @echo off
- set /p zfc=请输入链接:
- 粘贴上面的示例字符串
- 批处理要实现的功能:自动将示例字符串中的,
- 1、20302替换成20304
- 2、将&a=1&bizid=1023&dotrans=0&hy=SH&idx=1&m=90a771280dc7b66386def1fb66c46cb6&upid=500210&web=1这一段删除
- 3、将最后这一段 &extg=10f002e&ftype=106&svrbypass=AAuL%2FQsFAAABAAAAAADCg%2FMPTMuTOhKqovDeZBAAAADnaHZTnGbFfAj9RgZXfw6V3j7vuys4AKMz%2Bp6pPCJ3ALOzRqRGs2rsGKiA0fNBNns%3D&svrnonce=1692332194&fexam=1&X-snsvideoflag=xW29也删除。
- 4、剩下的输出显示出来,并自动复制到剪贴板就好了。
复制代码
最终输出:- https://finder.video.aa.com/251/20304/stodownload?encfilekey=Cvvj5Ix3eez3Y79SxtvVL0L7CkPM6dFibFeI6caGYwFEMUEDjJPnm3dpFjWr1DUTibEJZs7dZelyxnb1AZlibiaiaAuZWUvXV471nfib0ozqNo7aEnBKFscXxia6YM0IGCekSHfLvIBnkHibclkAX0S14Qic0Bg&token=cztXnd9GyrH3ZYFfca0mbJ7UiaFibKcqbFBr3OibA3RwKG1obh80ia6mn8GjL4JMapTN7CEPCWRU3MQLBlgoVQVcVn8zxAtuX31dRzNb0mQfiaOHloPzkT77Hl72RfDdK2QWO
复制代码
&a=
&idx=
&extg=
&svrbypass=
&svrnonce=
&fexam=
20302
encfilekey=
&token=
这些是固定不变的,其它的字符串是变化的。
只保留encfilekey和token本身和后面的部分。
请高手帮忙,谢谢!
作者: qixiaobin0715 时间: 2023-8-18 14:18
本帖最后由 qixiaobin0715 于 2023-8-18 14:36 编辑
- @echo off
- set /p zfc=please input:
- set "zfc=%zfc:/20302/=/20304/%"
- set "zfc=%zfc:&a=`&a%"
- set "zfc=%zfc:&token=`&token%"
- set "zfc=%zfc:&extg=`&extg%"
- for /f "tokens=1,3 delims=`" %%i in ("%zfc%") do echo,%%i%%j
- pause
复制代码
至于如何复制到粘贴板上,自己搜一下论坛中的关键字应当能解决。
作者: buyiyang 时间: 2023-8-18 14:39
你是要下载微信视频号视频?处理后的url可以直接用curl下载
作者: qixiaobin0715 时间: 2023-8-18 14:51
复制到粘贴板上,好像是这个命令:clip
作者: hfxiang 时间: 2023-8-18 17:00
本帖最后由 hfxiang 于 2023-8-18 17:24 编辑
回复 1# thp2008
可用gawk( http://bcn.bathome.net/tool/5.1.0/gawk.exe )实现- @echo off
- rem 脚本保存为ANSI编码格式
- set /p zfc=请输入链接:
- echo;"?%zfc%?"|gawk -v"RS=[?&]" "/stodownload/{sub(/20302/,\"20304\");printf $0 RT}/^encfilekey=/{printf $0 RT}/^token=/{printf $0}"|clip
复制代码
作者: thp2008 时间: 2023-8-19 10:24
你是要下载微信视频号视频?处理后的url可以直接用curl下载
buyiyang 发表于 2023-8-18 14:39
是的,谢谢提示!
作者: thp2008 时间: 2023-8-19 12:06
本帖最后由 thp2008 于 2023-8-19 12:17 编辑
回复 thp2008
可用gawk( )实现
hfxiang 发表于 2023-8-18 17:00
hfxiang 老大,如果我不想输出到clip. 而是将结果输出到一个%URL% 的变量,应该怎么改一下。感谢!
我想将结果传递给下面这句:自动下载- @echo off
- rem 脚本保存为ANSI编码格式
- :start
- set /p zfc=请输入链接:
- echo;"?%zfc%?"|gawk -v"RS=[?&]" "/stodownload/{sub(/20302/,\"20304\");printf $0 RT}/^encfilekey=/{printf $0 RT}/^token=/{printf $0}"|clip
- set /a n=1
- curl -o D:\WXVideo\WX%n%.mp4 --connect-timeout 15 --max-time 360 --ssl-no-revoke -X GET "%URL%"
- set /a n+1
- goto start
复制代码
另外,这个WX%n%.mp4 这个%n%,我想从1一直循环就一直累加,我如何设置成一个循环累加变量。
作者: thp2008 时间: 2023-8-19 12:34
至于如何复制到粘贴板上,自己搜一下论坛中的关键字应当能解决。
qixiaobin0715 发表于 2023-8-18 14:18
可能我描述有误,这条对我的示例是可以。
真实使用,需要修改一下,第四行才行。
最终如下:测试没有问题- @echo off
- set /p zfc=please input:
- set "zfc=%zfc:/20302/=/20304/%"
- set "zfc=%zfc:&bizid=`&bizid%"
- set "zfc=%zfc:&token=`&token%"
- set "zfc=%zfc:&extg=`&extg%"
- for /f "tokens=1,3 delims=`" %%i in ("%zfc%") do echo,%%i%%j
- pause
复制代码
作者: buyiyang 时间: 2023-8-19 13:47
- @echo off
- set /p zfc=
- set "zfc=%zfc:/20302/=/20304/%"
- set "zfc=dl=%zfc%"
- for /l %%i in (1,1,31) do call :re %%i
- set "url=%dl%?encfilekey=%encfilekey%&token=%token%"
- 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)
- :dl
- curl -o "%outfile%" -k --connect-timeout 15 --max-time 360 "%url%"
- pause&exit
- :re
- for /f "tokens=%1 delims=?&" %%i in ("%zfc%") do set "%%i"
复制代码
作者: thp2008 时间: 2023-8-19 14:06
本帖最后由 thp2008 于 2023-8-19 14:14 编辑
buyiyang 发表于 2023-8-19 13:47
感谢,我稍微修改了一下,可以了。如果开始,能加一段自动检测D:\WXVideo\WX%n%.mp4 的所有WX*.mp4的最大值就好了,批处理每次运行的时候,自动从最大值的下一个数字开始,就完美了。- @echo off
- set n=1
- if exist D:\WXVideo\WX%n%.mp4 goto Jiance
- :start
- echo.
- set /p zfc=请输入链接:
- echo.
- set "zfc=%zfc:/20302/=/20304/%"
- set "zfc=dl=%zfc%"
- for /l %%i in (1,1,31) do call :re %%i
- set "url=%dl%?encfilekey=%encfilekey%&token=%token%"
- if not exist "D:\WXVideo\WX%n%.mp4" set "outfile=D:\WXVideo\WX%n%.mp4"&goto :dl
- :dl
- curl -o "%outfile%" -k --connect-timeout 15 --max-time 360 "%url%"
- set /a n=n+1
- goto start
- :re
- for /f "tokens=%1 delims=?&" %%i in ("%zfc%") do set "%%i"
- :Jiance
- 自动检查D:\WXVideo\目录下的所有WX*.mp4的最大数值+1,并赋值给一个新的%n% (这一功能不能该如何实现)
- goto start
复制代码
作者: thp2008 时间: 2023-8-19 16:39
本帖最后由 thp2008 于 2023-8-19 16:43 编辑
感谢大家的帮助,太好用了,已成功下载几十部短视频,最终成品分享给大家。- @echo off
- REM 脚本保存为ANSI编码格式
- echo.
- echo 视频号自动下载脚本
- set n=1
- REM 将下面的D:\WXVideo,换成你自已的视频号下载保存目录路径就好了。
- set mulu=D:\WXVideo
- if exist %mulu%\WX%n%.mp4 goto Jiance
- :start
- echo.
- set /p zfc=请输入或粘贴下载链接:
- echo.
- set "zfc=%zfc:/20302/=/20304/%"
- set "zfc=dl=%zfc%"
- for /l %%i in (1,1,31) do call :re %%i
- set "url=%dl%?encfilekey=%encfilekey%&token=%token%"
- if not exist "%mulu%\WX%n%.mp4" set "outfile=%mulu%\WX%n%.mp4"&goto :dl
- :dl
- echo 马上为您下载,请稍等......
- echo.
- curl -o "%outfile%" -k --connect-timeout 15 --max-time 720 "%url%"
- echo.
- echo 下载完成。
- set /a n=n+1
- goto start
- :Jiance
- cd /d "%mulu%"
- for /l %%s in (5000,-1,1) do (
- if exist "*%%s.mp4" (
- set /a n=%%s+1
- goto :start
- )
- )
- :re
- for /f "tokens=%1 delims=?&" %%i in ("%zfc%") do set "%%i"
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |