command-line - 如何在 wmic 输出中设置列顺序?

标签 command-line batch-file wmic

我主要以这种方式将 wmic 用作 linux-ps-equivalent:

wmic process where (name="java.exe") get processId, 命令行

但是输出列是按字母顺序排列的,所以我得到:

CommandLine                            ProcessId
java -cp ... some.Prog arg1 arg2 ...   2345
java -cp ... other.Prog arg1 arg2 ...  3456

当我想要的是:

ProcessId  CommandLine
2345       java -cp .... some.Prog arg1 arg2 ...
3456       java -cp .... other.Prog arg1 arg2 ...

当命令行很长时,这将更具可读性。

我正在考虑编写一个 ps.bat 来简化我使用的语法,因此非常欢迎任何用于后处理 wmic 输出的批处理脚本解决方案。

最佳答案

另一种选择是通过 VBS 直接访问 WMI 的 Win32_Process SQL 表,而不使用 WMIC。然后您可以准确管理哪些列、列顺序及其输出格式。

这是 CSV 输出的 VBS 代码: processList.vbs

' === Direct access to Win32_Process data ===
' -------------------------------------------
Set WshShell = WScript.CreateObject("WScript.Shell")
Set locator = CreateObject("WbemScripting.SWbemLocator")
Set service = locator.ConnectServer()
Set processes = service.ExecQuery ("select ProcessId,CommandLine,KernelModeTime,UserModeTime from Win32_Process")

For Each process in processes
   Return = process.GetOwner(strNameOfUser) 
   wscript.echo process.ProcessId & "," & process.KernelModeTime & "," & process.UserModeTime & "," & strNameOfUser & "," & process.CommandLine
Next

Set WSHShell = Nothing

命令行用法: cscript//NoLogo processList.vbs

Win32_Process 列列表:http://msdn.microsoft.com/en-gb/library/windows/desktop/aa394372(v=vs.85).aspx

原始 Java 代码在这里:http://www.rgagnon.com/javadetails/java-0593.html

关于command-line - 如何在 wmic 输出中设置列顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10243515/

相关文章:

json - 如何在 shell 脚本中缩小 JSON?

unix - 如何从命令行执行可移植、可读和可管道化的逐字符差异?

internet-explorer - 如何使用批处理文件为ie和chrome设置多个主页?

windows - 模拟网络文件夹以在Powershell脚本中进行测试

php - 无法在 Windows xampp 中使用命令行导入任何 sql 文件

assembly - 编译汇编代码

powershell - Powershell中,如何检索现有策略设置(Win8.1/server 2012 r2 core)

Unix 中无法识别 Java WMIC 命令

wmic - 如何更改 uuid wmic csproduct 获取 uuid

macos - 如何在 mac 终端上将单个包合并为一个元包?