Board logo

标题: [文本处理] [已解决]BAT或VBS怎样从这样文本按特征码提取数字作变量? [打印本页]

作者: toobat    时间: 2015-3-30 12:24     标题: [已解决]BAT或VBS怎样从这样文本按特征码提取数字作变量?

本帖最后由 toobat 于 2015-3-31 15:35 编辑

有一组数字16347是变化的
想以这串特征码读取后面5位数字出来作变量
特征码后有些行是英文,找到那第一个匹配是数字并读取出来要怎么写??
读取成16347这样五位数

BAT,VBS都可以,求大神
作者: pcl_test    时间: 2015-3-30 12:35

回复 1# toobat
这两个问题不是一样?
http://www.bathome.net/viewthread.php?tid=34829
作者: toobat    时间: 2015-3-30 15:57

回复 2# pcl_test


    我发现这个文件会生成其他东西,用上次那个读取会读错,只能靠特征码才能正确读取,不知道能不能以普通文本编码获取?
作者: pcl_test    时间: 2015-3-30 16:02

回复 3# toobat

[attach]8486[/attach]
作者: apang    时间: 2015-3-30 21:34

  1. @echo off
  2. for /f %%a in ('sed -r "s/\x00//g;s/.*LoadPerfMICROSOFT([0-9]+).*/\1/" sys.config') do (
  3.         set "var=%%a"
  4. )
  5. echo,%var%
  6. pause
复制代码

作者: apang    时间: 2015-3-30 21:44

vbs 好像可以这样:
  1. with CreateObject("Adodb.Stream")
  2.         .Type = 1
  3.         .Mode = 3
  4.         .Open
  5.         .LoadFromFile "sys.config"
  6.         bin = .Read(-1)
  7. End with
  8. For i = 1 to LenB(bin)
  9.         b = MidB(bin, i, 1)
  10.         If AscB(b) <> 0 Then s = s & Chr(AscB(b))
  11. Next
  12. Set re = New RegExp
  13. re.Pattern = "LoadPerfMICROSOFT(\d+)"
  14. If re.Test(s) Then var = re.Execute(s)(0).SubMatches(0)
  15. MsgBox var
复制代码





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