2013-08-22 44 views
0

有没有办法从windows cmd命令中选择列? 例如: 当我使用下面的命令:从cmd命令中选择列

tasklist 

我得到这样的结果:

Image Name      PID Session Name  Session# Mem Usage 
System Idle Process    0 Services     0   12 K 
System       4 Services     0  920 K 
smss.exe      260 Services     0  764 K 
csrss.exe      360 Services     0  3,360 K 
wininit.exe     412 Services     0  4,428 K 
csrss.exe      424 Console     1  10,316 K 
services.exe     476 Services     0  9,116 K 
winlogon.exe     500 Console     1  5,456 K 
lsass.exe      512 Services     0  10,300 K 
lsm.exe      540 Services     0  2,960 K 
svchost.exe     648 Services     0  8,212 K 
svchost.exe     724 Services     0  8,048 K 
svchost.exe     796 Services     0  14,740 K 
svchost.exe     848 Services     0  60,788 K 
svchost.exe     884 Services     0  27,812 K 
svchost.exe     1036 Services     0  9,796 K 

,我只需要在第一和最后一列。 有没有一种方法可以只显示我需要的列? 坦克

回答

1

这并不完美,因为任务列表中的字段因任务名称的长度而异,但对您而言可能已足够好。

它采用所谓的repl.bat一个辅助批处理文件从 - http://www.dostips.com/forum/viewtopic.php?f=3&t=3855

tasklist|repl "^(.......................).*(.............)$" "$1 $2" m 

调整第一组(....)的长度,以适应你。

+0

它给了我这个错误: – ofloflofl

+0

是否有一个命令来显示r =每个文件夹的内存?在窗口 – ofloflofl

+0

@ofloflofl你设法让它工作?我不明白你的问题。 – foxidrive

0

一个很大的帮助是,该列有一个固定的宽度,这样你就可以使用下面的丑衬:

for /f "delims=" %I in ('tasklist') do @set "_=%I"&@call echo.^%_:~0,25^% ^%_:~64^% 

或更好这个批处理文件:

@echo off 
setlocal ENABLEEXTENSIONS DISABLEDELAYEDEXPANSION 
for /f "skip=1 delims=" %%I in ('tasklist') do (
    set "_=%%I" 
    call echo %%_:~0,25%% %%_:~64%% 
) 
endlocal 

呼叫, %%语法是我的首选样式,而不是DELAYEDEXPANSION,我一直试图避免,因为它在我的经验中有一些烦人的副作用。所以我在我们的部门宣称它是不好的风格,我对它有点鼓吹:)。