需要特定文本作为文本文件的输出

时间:2017-08-03 10:02:58

标签: batch-file cmd

我有一个名为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字(字符串)作为输出。

2 个答案:

答案 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