![](/img/trans.png)
[英]Looking for Unix style 'getopt' command line parsing in a Windows batch file
[英]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.