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

回复 1# fzp070

另一个版本...
  1. @echo off & setlocal
  2.    set "line=CURRENT_BLACKGAP=Z...3; hit-dyn-v2=Z...3; FEED_LIVE_VERSION=Z...3; LIVE_BUVID=Z...3; PVID=Z...3; rpdid=Z...3; buvid_fp_plain=Z...3; buvid_fp=Z...3; buvid4=Z...3; _uuid=Z...3; fingerprint=Z...3; bmg_af_switch=Z...3; CURRENT_QUALITY=Z...3; bmg_src_def_domain=Z...3; browser_resolution=Z...3; enable_web_push=Z...3; header_theme_version=Z...3; home_feed_column=Z...3; b_nut=Z...3; buvid3=Z...3; bsource_origin=Z...3; bmg_af_switch=Z...3; bmg_src_def_domain=Z...3; share_source_origin=Z...3; bili_ticket=Z...3; bili_ticket_expires=Z...3; DedeUserID=Z...3; DedeUserID__ckMd5=Z...3; SESSDATA=167.......0C; bili_jct=Z...3; sid=Z...3; bp_t_offset_330614218=Z...3; CURRENT_FNVAL=Z...3; b_lsid=Z...3; bsource=Z...3"
  3.    setlocal enabledelayedexpansion &set "go=1" &set "ok="
  4.    for %%a in (!line!) do if defined go if /i "%%a"=="SESSDATA" (set/a "ok=1") else if defined ok (set "go=" &set "v=%%a")
  5.    echo,SESSDATA=!v!&pause&exit/b
复制代码
1

评分人数

    • fzp070: 此楼代码有些问题,大佬再帮忙看看!技术 + 1

TOP

本帖最后由 aloha20200628 于 2024-12-13 09:59 编辑

回复 3# fzp070

用 grep.exe 更直截了当... (本坛第三方下载 grep.exe 落地即用 http://bcn.bathome.net/s/tool/index.html?key=grep
  1. @echo off & setlocal
  2.    set "line=CURRENT_BLACKGAP=Z...3; hit-dyn-v2=Z...3; FEED_LIVE_VERSION=Z...3; LIVE_BUVID=Z...3; PVID=Z...3; rpdid=Z...3; buvid_fp_plain=Z...3; buvid_fp=Z...3; buvid4=Z...3; _uuid=Z...3; fingerprint=Z...3; bmg_af_switch=Z...3; CURRENT_QUALITY=Z...3; bmg_src_def_domain=Z...3; browser_resolution=Z...3; enable_web_push=Z...3; header_theme_version=Z...3; home_feed_column=Z...3; b_nut=Z...3; buvid3=Z...3; bsource_origin=Z...3; bmg_af_switch=Z...3; bmg_src_def_domain=Z...3; share_source_origin=Z...3; bili_ticket=Z...3; bili_ticket_expires=Z...3; DedeUserID=Z...3; DedeUserID__ckMd5=Z...3; SESSDATA=167.......0C; bili_jct=Z...3; sid=Z...3; bp_t_offset_330614218=Z...3; CURRENT_FNVAL=Z...3; b_lsid=Z...3; bsource=Z...3"
  3.    echo,"%line%"|grep -o "SESSDATA=[^;]*"
  4. pause&exit/b
复制代码
1

评分人数

    • fzp070: 这个不错,运用到实际中,也完美解决!技术 + 1

TOP

本帖最后由 aloha20200628 于 2024-12-14 20:31 编辑

回复 11# fzp070

   如果一楼示例字符串中包含 |& 等cmd转义字符,须用双引号包裹字符串变量 line 赋值表达式,须用双引号包裹 echo 输出数据,须将 for %%a in (%line%) ... 句式改为变量延迟句式以便逃逸 cmd 对 %line% 的预处理... 据此已订正8楼代码。
   如果源数据被存入文本文件(假定为 1.txt)且只有一行,可用以下版本
  1. @echo off &setlocal &set "go=1" &set "ok="
  2. for /f "delims=" %%a in (1.txt) do for %%x in (%%a) do if defined go if /i "%%x"=="SESSDATA" (set/a "ok=1") else if defined ok (set "go=" &set "v=%%x")
  3. set/p="SESSDATA=%v%"<nul&echo,&pause&exit/b
复制代码
若用 grep 一行流则可提取出 1.txt 中每行(若不止一行数据)的目标字段 "SESSDATA=...",并可定向输出到 2.txt
  1. type "1.txt"|grep -o "SESSDATA=[^;]*">"2.txt"
复制代码
1

评分人数

    • fzp070: 修改后OK,只是输出多了双引号。技术 + 1

TOP

回复 15# fzp070

   8楼代码已订正,因已采用变量延迟故将%v%改为!v!即可取消双引号,也不怕其中包含 &| 等特殊字符 '作祟'。
   14楼代码因全程未用延迟变量,故须改用 set/p="SESSDATA=%v%"<nul&echo, 句式,以避免其中可能包含的特殊字符 '作祟' ...
1

评分人数

    • fzp070: 谢谢!辛苦了!技术 + 1

TOP

返回列表