0

有没有办法从 windows 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

我只需要第一列和最后一列。有没有办法只显示我需要的列?坦克

4

2 回答 2

1

这并不完美,因为任务列表中的字段会随着任务名称的长度而变化,但对您来说可能已经足够了。

它使用一个名为 repl.bat 的辅助批处理文件,来自 - http://www.dostips.com/forum/viewtopic.php?f=3&t=3855

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

调整第一组 (....) 的长度以适合您。

于 2013-08-22T12:44:34.317 回答
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

call 和 %% 语法是我的首选风格,而不是我总是尽量避免的 DELAYEDEXPANSION,因为在我的经验中它有一些烦人的副作用。因此,我在我们部门宣布这是不好的作风,我对此有点说教:)。

于 2013-09-12T07:55:11.753 回答