Board logo

标题: [文本处理] 批处理如何获取/提取tasklist命令返回结果中的第一列/第1列内容 [打印本页]

作者: yeeboys    时间: 2016-10-11 10:43     标题: 批处理如何获取/提取tasklist命令返回结果中的第一列/第1列内容

本帖最后由 pcl_test 于 2016-10-11 11:01 编辑

tasklist怎么取第一列的
C:\Users\Administrator>tasklist

映像名称                       PID 会话名              会话#       内存使用
========================= ======== ================ =========== ============
System Idle Process              0 Services                   0         24 K
System                           4 Services                   0     68,688 K
smss.exe                       336 Services                   0      1,224 K
csrss.exe                      508 Services                   0      5,968 K
wininit.exe                    632 Services                   0      5,600 K
作者: pcl_test    时间: 2016-10-11 12:31

http://www.bathome.net/thread-2189-1-1.html
  1. for /f "delims=," %%a in ('tasklist /v /fo csv') do @echo;%%~a
  2. pause
复制代码
  1. powershell -c "tasklist /v /fo csv|convertfrom-csv|select '映像名称'"&pause
复制代码

作者: yeeboys    时间: 2016-10-11 14:43

回复 2# pcl_test

谢谢好心人
   我把第一段话写在bat上,运行后出现的是
C:\Users\Administrator\Desktop\bat>for /F "delims=," %a in ('tasklist /v /fo csv
') do @echo;%~a
然后就不动了,最后还未响应,我是win7的
这两段话是要写在一起呢,还是分开两个bat,求指点
作者: yeeboys    时间: 2016-10-11 14:45

本帖最后由 yeeboys 于 2016-10-11 14:51 编辑

回复 2# pcl_test


    C:\Users\Administrator\Desktop\bat>for /F "delims=," %a in ('tasklist /v /fo csv
') do @echo;%~a
'tasklist /v /fo csv' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

第二个脚本可以,结果是
映像名称
--------
System Idle Process
System
smss.exe
csrss.exe
...
我想只显示第三行开始,不要 映像名称 、--------  行不行
作者: yeeboys    时间: 2016-10-11 15:06

回复 2# pcl_test


netstat -an命令  请问怎么得到第二列冒号后的东西
作者: 949825667@qq.co    时间: 2016-10-11 15:58

回复 5# yeeboys


    netstat -an|gawk -F ":" '{print $2}'|gawk -F " " '{print $1}'
作者: pcl_test    时间: 2016-10-11 16:13

回复 3# yeeboys
保存为bat文件运行,而不是在cmd窗口执行
作者: pcl_test    时间: 2016-10-11 16:15

回复 5# yeeboys
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=2" %%a in ('netstat -an^|find ":"') do (
  3.     set str=%%a
  4.     for %%b in ("!str::=\!") do echo;%%~nb
  5. )
  6. pause
复制代码
  1. powershell -c "(netstat -an) -match ':'|%%{($_ -split '\s+')[2].split(':')[-1]}"&pause
复制代码

作者: pcl_test    时间: 2016-10-11 16:17

回复 4# yeeboys
more /?
……select '映像名称'"|more +3&pause
作者: pcl_test    时间: 2016-10-11 16:24

回复 6# 949825667@qq.co
第三方http://www.bathome.net/s/tool/index.html?key=gawk
  1. netstat -an|gawk "/:/{sub(/^.+:/,\"\",$2);print $2}"
复制代码

作者: yeeboys    时间: 2016-10-11 16:46

回复 6# 949825667@qq.co


    C:\Users\Administrator>netstat -an|gawk -F ":" '{print $2}'|gawk -F " " '{print
$1}'
'gawk' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
作者: 949825667@qq.co    时间: 2016-10-11 16:47

回复 11# yeeboys


    第三方,10楼版主给链接了!
作者: yeeboys    时间: 2016-10-11 16:49

回复 8# pcl_test

像第一个那样写怎么不行
    powershell -c "netstat -an /v /fo csv|convertfrom-csv|select '本地地址'"&pause
作者: yeeboys    时间: 2016-10-11 16:57

回复 9# pcl_test


    powershell -c "tasklist /v /fo csv|convertfrom-csv|select '映像名称'"|more+3&pause
这样pause就没有了,一闪就关了
作者: pcl_test    时间: 2016-10-11 17:02

回复 13# yeeboys
因为没有这样的语法
tasklist /?
netstat /?
回复 14# yeeboys
如果看不清,建议使用放大镜
作者: yeeboys    时间: 2016-10-11 17:19

回复 15# pcl_test


    非常感谢大佬
作者: ybbpgkfdn    时间: 2016-10-13 09:30

回复 6# 949825667@qq.co


  着又不是shell
作者: GNU    时间: 2016-10-13 09:55

回复 17# ybbpgkfdn


    他用的是Windows版本的 gawk.exe




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