过滤.txt文件

时间:2016-06-02 08:05:35

标签: windows batch-file text-files

首先,这是我文件的输出:

   License Administration Tool Version 6.418.1 Built on 16.10.2015 15:03:18.
admin >connect ch-s-0001504 4084
    Software version: 6.216.0
    Build date: 29.10.2013 15:21:54
    Standalone mode
    Ready: yes
    Server name: ch-s-0001504   Server id: FYT-42B8101A64CAD992
Warning: restricted connection, some operations are not permitted; due to an existing connection in full access from CH-W-7000357.ch.abb.com/10.41.33.65
admin >getLicenseUsage -feature DL1
    Dassault Systemes V5 (B42B3C3E-8CA2-422F-8B69-89556C54D4FC)
        DL1  maxReleaseNumber: 0  maxReleaseDate: 01.02.18 00:59:00 type: ConcurrentUser  count: 1  inuse: 0 customerId: 200000000009118
admin >

我要做的是在整个文件中过滤计数和使用的值以及" Dassault Systemes V5"之后的前3个字母。这里DL1

到目前为止我做了什么:

@echo off
setlocal enableextensions enabledeylayedexpansion
for /f "token=1,3"%%a in ('type all.txt') do(
    if "x%%a" == "xcount"(
    echo %%a %%b
    )
    if "x%%a"=="xinuse"(
    echo %%a %%b
    )
)
endlocal

我只是不知道这是否是正确的做法?

1 个答案:

答案 0 :(得分:1)

你可以用这个:

[a[i]+1;a[i+1])

@echo off for /f "usebackq skip=10 tokens=1,10,12 delims= " %%a in ("all.txt") do ( set "feature=%%a" set "count=%%b" set "inuse=%%c" goto :breakloop ) :breakloop echo count: %count% echo inuse: %inuse% echo feature: %feature% pause 循环中,如果你使用跳过,你可以跳过一定数量的行,你可以使用goto打破循环(即使标签在循环内,所以不要这样做)。作为您的功能,计数和使用变量是第1,第10和第12个令牌,我们使用for /f将其设置为tokens=1,10,12%%a%%b。我使用%%c所以我可以通知循环括号中的值是一个应该被读取的文件,同时仍然能够使用双引号,如果文件名包含空格。

修改

获得多个计数/入口/功能的版本:

usebackq