Board logo

标题: [系统相关] 求批处理提取wmic命令语句返回结果中的指定字内容 [打印本页]

作者: taosicai    时间: 2015-6-17 14:40     标题: 求批处理提取wmic命令语句返回结果中的指定字内容

本帖最后由 pcl_test 于 2017-3-27 22:02 编辑

各位大大:需求如下:
wmic service get Name, PathName | findstr db2sysc   返回结果如下:
DB2-0                                            E:\PROGRA~2\IBM\SQLLIB\bin\db2syscs.exe
DB2INST1                                         E:\PROGRA~2\IBM\SQLLIB\bin\db2syscs.exe
我想得到第一列的结果,直接把命令放到for中,提示我“此时不应有 |。
  1. for /f "tokens=1*" %%s in ('wmic service get Name, PathName | findstr db2sysc') do (
  2.     @echo %%s
  3. )
复制代码
问题:
1、wmic service where PathName 有没有like或*这样的通配符,因为路径不确定。
2、for的in('')是否支持 |
3、求解:如果第2列的值以db2syscs.exe结尾时获取第1列的值?
作者: bailong360    时间: 2015-6-17 14:45

需要转义'|'
作者: taosicai    时间: 2015-6-17 15:01

回复 2# bailong360


    请问,如何转义?刚试完,加^无效
作者: bailong360    时间: 2015-6-17 15:07

回复 3# taosicai
逗号也要转义
  1. @echo off
  2. for /f "delims=" %%s in ('wmic service get Name^, PathName ^| findstr db2sysc') do (
  3.     echo %%s
  4. )
  5. pause
复制代码

作者: taosicai    时间: 2015-6-17 15:23

回复  taosicai
逗号也要转义
bailong360 发表于 2015-6-17 15:07



    谢谢,刚刚也发现,要转,刚试完,正要回复,就看见您回复了。
作者: gawk    时间: 2015-6-17 16:18

like命令的语法
wmic Process Where "Name like '%ost.exe'" Get CommandLine
作者: gawk    时间: 2015-6-17 16:21

获取第一列的值
@echo off
for /f "tokens=1" %%s in ('wmic service get Name^, PathName ^| findstr "db2syscs.exe"') do (
    echo %%s
)
pause




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2