wmic 进程表(在命令提示符窗口内)可以按值排序吗?

2024-02-14

我一直在探索各种选择,例如/format标志,但是排序似乎只能在 XML 或 HTML 输出中进行。我想在命令提示符本身内进行排序。看来即使是TaskList http://technet.microsoft.com/en-us/library/bb491010.aspx不能这样做(我更喜欢使用 wmic,因为它似乎执行得更快)。

要运行的命令的示例是wmic process get name,processid,workingsetsize。进程似乎是按 processid 排序的,但按名称或内存使用情况排序(至少在我的用例中)更有意义(workingsetsize).

根据要求,以下是 wmic 进程表输出的示例:

Name                          ProcessId  WorkingSetSize
System Idle Process           0          20480
System                        4          765952
smss.exe                      384        393216
csrss.exe                     500        2850816
wininit.exe                   596        774144
csrss.exe                     612        6230016
winlogon.exe                  672        2023424
services.exe                  696        7192576
lsass.exe                     704        9814016
svchost.exe                   820        5287936
svchost.exe                   872        7454720
atiesrxx.exe                  936        1028096

显然,进程列表可能会变得很长,因此我已将其删除。


@ECHO OFF
SETLOCAL
FOR /f "delims==" %%i IN ('set $ 2^>nul') DO SET "%%i="
FOR /f "delims=" %%i IN ('wmic process get Name^, ProcessId^, WorkingSetSize ') DO (
 IF DEFINED $0 (
  SET wss=%%i
  CALL SET wss=0000000000000000000%%wss:~60%%
  CALL SET wss=%%wss: =%%
  CALL SET wss=$%%wss:~-20%%
  CALL SET %%wss%%=%%i
 ) ELSE (SET $0=%%i)
)

FOR /f "tokens=1*delims==" %%i IN ('set $') DO ECHO(%%j

这应该可以满足您的要求。

症结在于:WMIC命令需要在字段名称之间使用逗号。这些需要在for/f

首先删除所有以“$”开头的环境变量,然后删除每一行WMIC已处理。第一行(标题)保存在$0然后每一行都保存在$size

这里的技巧是列表中的 SIZE 不仅通过空格填充左对齐,因此零字符串首先被添加到工作集大小列的内容前面,该列实际上可能从第 62 列开始 - 但第 61 列是一个空格。使用“60”是因为子字符串设施从第 0 列而不是第 1 列开始计数。
然后每个空格都被替换为 [nothing],去掉尾随空格(也很方便,第 61 列中的空格)
结果字符串中的最后 20 个字符形成工作集大小列的前导零填充版本。
在 tha 前面添加 $ ,并将结果变量设置为生成它的行的内容

最后列出一下内容$变量按所需的顺序生成所需的列表。

请注意,声称WMIC所描述的过程输出是按顺序排列的,无论有什么错误。仔细检查会发现它不是按 ProcessID 的顺序排列的 - 要么按字母顺序(因为该列也是左对齐),要么按字母顺序。


好的 - 修订版本,应该自动调整到进程名称列的宽度:

@ECHO OFF
SETLOCAL
FOR /f "delims==" %%i IN ('set $ 2^>nul') DO SET "%%i="
SET /A COUNT=0
FOR /f "delims=" %%i IN ('wmic process get Name^, ProcessId^, WorkingSetSize ') DO (
 IF DEFINED $0 (
  SET wss=%%i
  CALL %%lopcmd%%
  CALL SET wss2=%%wss2: =%%
  SET /A COUNT+=1
  CALL SET wss=$%%wss2:~-20%%%%COUNT%%
  CALL SET %%wss%%=%%i
 ) ELSE (SET $0=%%i&set/a wsscol=0&CALL :findcol&SET $0=%%i)
)
FOR /f "tokens=1*delims==" %%i IN ('set $') DO ECHO(%%j
GOTO :eof

:findcol
IF "%$0:~0,1%"=="W" SET lopcmd=CALL SET wss2=0000000000000000000%%wss:~%wsscol%%%&GOTO :eof
SET $0=%$0:~1%
SET /a wsscol+=1
GOTO findcol

没有实质性的变化 - 只需通过在标头中定位“W”并建立适当的命令来设置变量以进行处理来计算所需的宽度......并且必须使用CALL %%var%%方法...


小编辑:引入 COUNT 来区分具有相同工作集大小的行。Count只是扩展了用于排序的变量名称,并使名称唯一。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

wmic 进程表(在命令提示符窗口内)可以按值排序吗? 的相关文章

随机推荐

  • 当鼠标离开JQuery时停止.hover动画

    我有类似的东西 test hover function this animate function this animate 但如果用户的鼠标在动画结束之前离开 动画将继续 如果我快速重复地快速悬停和取消悬停元素 则动画会在鼠标离开元素后重
  • 从 3 个点检索正角或负角

    我正在围绕二维空间中的中心点旋转点 这些点是中心点 旧鼠标位置和新鼠标位置 我的旋转功能运行良好 我可以完美地计算角度 但如果用户沿应解释为逆时针方向移动鼠标 我想计算负角度 例如 如果您位于 小于 中心点的 y 值之上 小于 则向右 正
  • window、window.top 和 window.parent 之间有什么区别?

    我刚刚注意到top window and parent变量给了我相同的值 我正在 gmail 收件箱页面对此进行测试 有人知道这三个值有什么区别吗 如果您在框架内 window指当前帧 parent指的是当前框架的父级 top指最外层框架
  • 元音子序列

    我在准备面试时在网站上发现了这个问题 字符串的神奇子序列S是一个子序列S那 按顺序包含所有五个元音 查找字符串的最大神奇子序列的长度S 例如 如果S aeeiooua then aeiou and aeeioou是神奇的子序列 但aeio
  • 将 TIMESTAMP 列更新为可为空

    我有一个表存在于两个数据库中 在一个数据库中有一个表 其中有一列称为ROW VERSION这是类型TIMESTAMP NOT NULL 在第二个数据库中 同一个表具有相同类型的列TIMESTAMP但它是类型TIMESTAMP NULL 我想
  • 活动图 定时事件

    我正在尝试建模以下内容 填写提交表单时 系统每 5 分钟自动保存一次用户进度 这是我尝试过的 但我认为这是不正确的 就我而言 仅在 填写提交 活动完成后才会询问条件 另外 我不想表明用户正在再次开始 填写提交 活动 您将使用由虚线框表示的可
  • 具有多个连接的 ActiveRecord 查询无法识别关系

    我正在尝试编写一个 ActiveRecord 查询 使用以下查询返回注册特定课程的所有学生 def self students enrolled in course id Student joins enrollments joins se
  • .net 控制台应用程序 32 位与 64 位

    NET 中的应用程序是否需要构建为 64 位才能充分利用具有 64 位操作系统的计算机 或者它是否会像 32 位构建一样利用它 基本上 我们遇到了内存不足异常的问题 建议在 64 位机器上运行控制台应用程序 这 可能 解决该问题 问题是我们
  • 使用 Spring Security + Spring data + MongoDB 进行身份验证

    我想将 Spring security 与 MongoDB 结合使用 使用 Spring 数据 并从我自己的数据库中检索用户以实现 spring security 但是 我不能这样做 因为我的用户服务类型似乎不受支持 这是我的 UserSe
  • pip (python2) 和 pip3 (python3) 可以共存吗?

    我一直认为 pip 适用于 Python 2 pip3 适用于 Python 3 为了安装不同版本的 pip 我执行了以下操作 sudo apt get install python pip sudo apt get install pyt
  • PHP json_decode 有单引号问题,但没有双引号问题

    通过示例最容易解释 var dump json decode a b c d e f NULL var dump json decode a b c d e f array 3 0 gt object stdClass 1 1 a gt s
  • 如何在svg中动态设置坐标点

    我正在尝试使用 SVG 创建一个三角形 我这样做是按照tutorial http tutorials jenkov com svg polygon element html 但问题是坐标是硬编码的 在画布中 我通过从 javascript
  • 成员表达式无法从可为空的十进制转换为对象

    我正在开发一个 MVC 项目 并希望向 Html TextboxFor 方法传递属性名称 这是我的视图模型 public class RuleViewModel
  • AngularJS - 调用 Flickr API 失败并显示警告消息

    我有一个简单的 AngularJS 应用程序 允许用户搜索 Flickr 照片 问题出在 IE 中 当我调用 Flickr API 时 我收到以下消息 此页面正在访问不受其控制的信息 这会带来安全风险 你想继续吗 如果我单击 是 应用程序就
  • 如何在不使用 TableViewController 的情况下创建分组 TableView

    我有一个 UITableView 我希望它有 2 个部分 我现在知道 如果您使用 UITableViewController 并且使用静态单元格 则只能拥有分组部分 而我都不是 我想做的可能吗 如果是这样 我可以在哪里寻求设置方面的帮助 似
  • org.springframework.batch.item.ReaderNotOpenException:阅读器必须先打开才能读取

    我正在使用 Spring Batch 来运行 从数据库表读取并写入另一个表 作业 该作业是由 Quartz 调度的 数据库是 oracle 它是 c3p0 我遇到了 reader not open 异常 这是工作背景
  • sequelize/sequelize-typescript - findAll 与 HasMany 返回一个对象而不是数组

    我正在尝试使用sequelize typescript 建立一对多关系 但是当我尝试获取数据时 许多关系返回给我一个对象而不是数组 我有两张桌子 球队和球员 团队可以有很多玩家 一个玩家属于一个团队 我的模型 Table export cl
  • 防止 OSX 版 Safari 中的捏合/缩放

    我有一个带有多个视口的 html5 应用程序 我打算使用 HammerJS 在各个视口上提供捏合 缩放手势 目前 每当我捏住 Safari OSX 时 整个窗口就会放大或缩小 我想防止这种情况发生 对于 iOS 这有效 但它并不能阻止 OS
  • 许可 WPF、Silverlight 和 WP7 程序集

    我正在寻找一种解决方案来许可 WPF Silverlight 和 WP7 程序集 所讨论的程序集是一个图表控件 它具有可跨平台使用的单个 API 我正在为每个平台 WPF SL WP7 创建一个单独的 MSI 用户可以下载并安装 这将在其
  • wmic 进程表(在命令提示符窗口内)可以按值排序吗?

    我一直在探索各种选择 例如 format标志 但是排序似乎只能在 XML 或 HTML 输出中进行 我想在命令提示符本身内进行排序 看来即使是TaskList http technet microsoft com en us library