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既然你接受了我的答案,我猜问题已经解决了?作为将来的参考,你介意告诉我它是什么吗?顺便说一句,只是一个快速的跟进,例如,如果我的文件有多个计数值和使用等,这个脚本将只得到顶部是正确的,如果是这样,有没有一个快速的方法来获得所有?如果你不使用任何代码>循环中的变量,不需要延迟扩展,请查看更多信息