Board logo

标题: [文本处理] 【已解决】批处理如何把有特殊字符的文本截取,并且给两个变量? [打印本页]

作者: helpless    时间: 2022-5-10 21:37     标题: 【已解决】批处理如何把有特殊字符的文本截取,并且给两个变量?

本帖最后由 helpless 于 2022-5-11 15:49 编辑

test.txt文件是两行的:

testonly
test deviceinfo Mode Success:123.html?user=gqzOTT5W&pass=KuNe8rAy


请问要怎么把gqzOTT5WKuNe8rAy截取出来并给于变量?

user=后面8位是随机的
pass=后面8位也是随机的
每个设备不一样,但是位置和位数是固定的


谢谢
作者: yakeyun    时间: 2022-5-11 00:28

回复 1# helpless
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1,*  delims=^=" %%a in (test.txt) do (
  3. set date1=%%b
  4. if defined date1 (
  5. for /f "tokens=1,*  delims=^&" %%c in ("!date1!") do (
  6. set user=%%c
  7. set date2=%%d
  8. for /f "tokens=1,*  delims=^=" %%e in ("!date2!") do (
  9. set pass=%%f
  10. )
  11. )
  12. )
  13. )
  14. echo 取得user数据:!user!
  15. echo 取得pass数据:!pass!
  16. pause>nul
复制代码

作者: qixiaobin0715    时间: 2022-5-11 09:20

  1. @echo off
  2. for /f "skip=1 tokens=2-5 delims=?=&" %%i in (test.txt) do (
  3.     set "%%i=%%j"
  4.     set "%%k=%%l"
  5. )
  6. echo,%user%
  7. echo,%pass%
  8. pause
复制代码

作者: helpless    时间: 2022-5-11 15:48

回复  helpless
yakeyun 发表于 2022-5-11 00:28



    感谢大神,测试可用
作者: helpless    时间: 2022-5-11 15:48

回复 3# qixiaobin0715


    感谢大神,测试可用
作者: for_flr    时间: 2022-5-11 17:12

补充一个powershell正则提取
  1. [regex]::matches((gc test.txt),'(?<=user=|pass=)\w{8}').value
复制代码





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