Windows Filter.txt文件

Windows Filter.txt文件,windows,batch-file,text-files,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

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

   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 >
我想做的是在整个文件中过滤count和inuse的值,以及“Dassault Systemes V5”后面的前3个字母,这里是DL1

到目前为止我所做的:

@echo关闭
setlocal enableextensions enabledeylayedexpansion
对于('type all.txt')中的/f“token=1,3”%%a,请执行以下操作(
如果“x%%a”=“x计数”(
回声%%a%%b
)
如果“x%%a”==“xinuse”(
回声%%a%%b
)
)
端部
我只是不知道这是否是正确的方法

你可以用这个:

@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
for/f
循环中,如果使用skip,可以跳过一定数量的行,并且可以使用goto来打断循环(即使标签在循环中,也不要这样做)。由于您的功能、计数和使用变量是第一个、第十个和第十二个标记,我们使用
标记=1,10,12
将它们设置为
%a
%b
%c
。我使用
usebackq
,以便通知循环括号中的值是应该读取的文件,同时仍然可以使用双引号,例如文件名是否包含空格

编辑

获取多个计数/使用次数/功能的版本:

@echo off
setlocal EnableDelayedExpansion
for /f "usebackq tokens=1,9,10,11,12 delims= " %%a in ("all.txt") do (
    if "%%b"=="count:" if "%%d"=="inuse:" (
        set "feature=%%a"
        set "count=%%c"
        set "inuse=%%e"
        echo count: !count!
        echo inuse: !inuse!
        echo feature: !feature!
        echo.
    )
)
pause

哦,老兄,谢谢你的回答!有没有可能一开始就得到那3封信?“DL1”?然后将结果写入另一个文本文件?@NikoKing如果您的文件是问题中的文本,您正在解析的行以
DS1
开头,这是第一个标记,因此它应该具有该值,并且在我的测试中是这样的。你确定文件的内容与你问题中的文本匹配吗(包括换行符)@NikoKing在这种情况下,我怀疑你在文件的顶部添加了一个换行符,这会导致跳转不远enough@NikoKing既然你接受了我的答案,我猜问题已经解决了?作为将来的参考,你介意告诉我它是什么吗?顺便说一句,只是一个快速的跟进,例如,如果我的文件有多个计数值和使用等,这个脚本将只得到顶部是正确的,如果是这样,有没有一个快速的方法来获得所有?如果你不使用任何
循环中的变量,不需要延迟扩展,请查看更多信息