繁体   English   中英

在Windows命令行批处理文件上解析命令行输出

[英]parsing command line output on Windows command line batch file

我有此命令可扫描文件并返回摘要。

例如在运行此命令时

omsCmdLineUtil.exe process C:\test.exe Default

结果输出为:

Ticket:[ 2214271306 ]

Process Details
---------------


File: [ C:\test.exe ]
   MD5: [ D41D8CD98F00B204E9800998ECF8427E ]
   SHA1: [ DA39A3EE5E6B4B0D3255BFEF95601890AFD80709 ]
   SHA256: [ E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855 ]
   File Size: [ 0 bytes ]
   File Type  Category: [ O ]
   File Type: [ - ]
   File Type Description: [ empty ]

[ Clean ] Ahnlab scan engine [ 1 ms ]
[ Clean ] ClamAV scan engine [ 1 ms ]
[ Clean ] BitDefender scan engine [ 1 ms ]
[ Clean ] Avira scan engine [ 1 ms ]
[ Clean ] Quick Heal scan engine [ 1 ms ]
[ Clean ] ThreatTrack scan engine [ 1 ms ]
[ Clean ] ESET scan engine [ 1 ms ]
[ Clean ] Total Defense scan engine [ 1 ms ]

Scan Completion
---------------
        [ Clean ]
        Ticket: [ 2214271306 ]
        File path: C:\test.exe
        Scan time: 1 ms [12/20/2015 13:00:06:791]


Process Completion
------------------
        Ticket: [ 2214271306 ]
        User agent: Default
        Profile: Default
        Result: [ Allowed ]
        File processed: C:\test.exe

我想创建一个批处理文件,通过搜索输出行Result:来解析此结果,检查它是[ Allowed ]还是[ Blocked ]并返回0表示allowed ,返回1表示blocked

我尝试了类似的方法,但实际上没有用:

omsCmdLineUtil.exe process C:\test.exe Default | set ts = findstr /C:"Result: [ Allowed ]"

if %ts% == "Result: [ Allowed ]" return 0
else return 1

为了获得预期的结果,必须对代码进行哪些修改?

批量return 我想,您想exit /b <errorlevel>

omsCmdLineUtil.exe process C:\test.exe Default | find "Result: [ Allowed ]" >nul && Exit /b 0 || Exit /b 1

当然,除了Exit 0您还可以使用set ts=0并使用它。 或改用echo

一些解释:

>nul将输出重定向到必杀技,保持屏幕清洁。

&&充当“如果先前的命令成功执行,则...”(找到字符串)

|| 充当“如果先前的命令未成功执行,则...”(未找到字符串)

我更喜欢在可能的情况下使用find ,因为它的语法更简单,但是当然findstr /C:"Result: [ Allowed ]"也可以

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM