在文本文件中搜索子字符串并保存到变量

时间:2014-12-01 02:36:22

标签: windows batch-file

我不熟悉Windows中的批处理脚本,并希望完成以下任务:

  1. 搜索文本文件(log.txt)
  2. 在第8行,抓住第二个数字并保存到变量。
  3. RXP:            3.2.2e (Feb 13 2002)
                    rxp     sched   distr   policy  servers vifs    acache  aFNAT
                    1       1       1       10      8       1       1       0
                    kern    trace   log     schaddr
                    1       0       3       xx.xx.xx.xxx
    
    Scheduler:      opens   hits    cpuload errors  retries time
                    15      426585  0       0       0       873431895
    

    我想将数字426585保存到我以后可以使用的变量中。

    任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

这样做:

for /f "skip=7 tokens=2 delims= " %%l in (d:\thing.txt) do set HITS=%%l
echo %HITS%

假设文件总是长8行而且永远不再长,并且命中总是行中的第二列。如果时间越长,您就需要更多逻辑来忽略后续行。

编辑:这应该能够处理文件中需要忽略的更多行:

Setlocal EnableDelayedExpansion

for /f "skip=7 tokens=2 delims= " %%l in (d:\thing.txt) do (
    if !FOUND! neq 1 (
        set HITS=%%l
        set FOUND=1
    )
)
echo %HITS%

PS。您可以使用

在PowerShell中执行此操作
$hits = [Int](gc D:\thing.txt)[7].Split(' ', [StringSplitOptions]'RemoveEmptyEntries')[1]
write $hits

编辑:PowerShell版本不需要更改以忽略更多行。