首先,这是我文件的输出:
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
我只是不知道这是否是正确的做法?
答案 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