如何从文件中获取特定单词的计数

时间:2014-01-30 11:27:12

标签: windows batch-file batch-processing

我有一个名为C:\User\abc\Desktop\Mtmlog.txt的文件,其内容为

1 Down@:01:46:44:902 Up@:04:08:00:233

1 Down@:02:40:44:908 Up@:03:08:00:293

1 Down@:05:50:44:978 Up@:06:08:00:263

1 Down@:09:45:44:103 Up@:10:08:00:283

有一个应用程序,在该文件中记录了Down和Up时间。

要检查应用程序的连续性,我想要一个查询来检查Down计数是否等于Up计数 如果计数相等,那么它应该回显Yes,如果计数不同,则回显No

2 个答案:

答案 0 :(得分:1)

这很简单易读。它计算出“Up”出现的行数并设置变量“UPS”。然后它计算出“向下”出现的行数并设置变量“DOWNS”。

FOR /F %%C IN ('FIND /C "Up"   ^< yourfile') DO SET UPS=%%C
FOR /F %%C IN ('FIND /C "Down" ^< yourfile') DO SET DOWNS=%%C
if "%UPS%"=="%DOWNS%" echo Yes
if NOT "%UPS%"=="%DOWNS%" echo No

使用输入文件,UPS设置为4,DOWNS设置为4,因此打印“是”。

答案 1 :(得分:1)

这可以在这里工作:

@echo off
findstr /v "^$" "C:\User\abc\Desktop\Mtmlog.txt" |findstr /v /i /r ".*down.*up.*" >nul && (echo No) || (echo yes)

这是另一种选择:

@echo off
set var=0
findstr /v "^$" "C:\User\abc\Desktop\Mtmlog.txt" |findstr /v /i /r ".*down.*up.*" >nul && set var=1
if %var% equ 1 (echo No) else (echo yes)