我有一个名为result.txt
的文本文件,其中包含
target reported max download size of 536870912 bytes
sending 'recovery' (18502 KB)...
OKAY [ 0.669s]
writing 'recovery'...
FAILED [ 0.138s]
finished. total time: 0.807s
我需要特定单词的确切输出" FAILED"作为输出(从第五行)
我正在运行该程序,
@echo off
cls
for /f "skip=5 tokens=1" %%a in (result.txt) do set word2=%%a
echo %word2%
pause
但是,我没有得到我需要的输出..请帮助你们..
我需要FAILED
字(字符串)作为输出。
答案 0 :(得分:0)
正如Compo已经指出的那样,如果你需要第五行,你需要跳过 4 行......
但还有另一个问题。你的循环继续,因此,总是得到最后一行的第一个标记。要避免它,请使用:
$unassignedCnt = sqlcmd -W -k 1 -S MSSQLSERVER -E -Q "SET NoCount ON; DECLARE @result varchar(max); SELECT @result= Count(DISTINCT SP.SubnetKey) FROM [Control].[dbo].[Subnet] AS SP Left OUTER JOIN [Control].[rw_current].[QIP_Subnet] AS Q ON SP.KeyHash = Q.__key_Hash; PRINT @result ;SET NoCount OFF; "
Write-Host $unassignedCnt
或
@echo off
set "word2="
for /f "skip=4 tokens=1" %%a in (result.txt) do if defined word2 set "word2=%%a"
echo %word2%
pause
这两种技术在第一次传递后都会破坏循环。
答案 1 :(得分:0)
您可以使用find
命令解析result.txt文件:
find "FAILED" result.txt
或使用type
管道以避免输出----result.txt
:
type result.txt|find "FAILED" /i