从命令提示符获取运行进程的命令行

3
我希望确定在命令提示符(cmd.exe)下正在运行的进程的命令行参数。
例如,如果我像下面这样启动我的abc.exe程序:
abc -d 

我希望能够在稍后确定整个命令行。由于TASKLIST实用程序只报告exe名称而不是启动进程时使用的参数,因此它无法提供此信息。


相关的ServerFault.com问题:https://serverfault.com/q/696460/176094 - mklement0
@mklement0 我认为这个主题提供了有帮助的答案,我宁愿在这里搜索它,而不是在服务器上...无论什么。 - Sam Ginrich
1
@SamGinrich,我同意:关闭它的不是我,我只是编辑了它(事实上,我已经为它投了赞成票)。你可以提名它重新开放,就像我刚刚做的那样(不确定需要多少票)。 - mklement0
2个回答

9
这里有一种基于GUI的方法(在Windows 7上测试过 - 因人而异)。我不知道有没有简单的方法从命令行获取这些数据。
  1. 打开任务管理器(CTRL+SHIFT+ESC),并转到“进程”选项卡。
  2. 从“查看”菜单中选择“选择列...”
  3. 向下滚动到最底部,选择“命令行”
  4. 在新显示的“命令行”列中,您可以看到启动进程的整个命令,包括任何命令行参数
命令行方法:
  1. Start a PowerShell with administrator priviledges
  2. Use the Get-WmiObject to list processes and filter the process name above. Add/remove fields through the select statement below - example:

    Get-WmiObject win32_process -Filter "name like '%notepad.exe'"|select CreationDate,ProcessId,CommandLine|ft -AutoSize
    
注意:本示例使用进程名称“notepad.exe”,请根据您的具体情况替换名称。

1
其实我想知道如何在DOS命令行中完成这个操作。 - Deepak
2
我已经找到了一种方法。我使用Tasklist获取了每个进程的processID,然后使用wmic获取了实际的commandLine。 - Deepak
2
使用“wmic process where processID=12345 get commandLine”命令可以获取进程启动时使用的实际命令以及其命令行参数。 - Deepak

-2

mellanmokb的方法实际上是有效的,但我认为问题应该是什么?也许可以在代码中看到它,如果是这种情况,你是使用C#还是VB?

如果是C#,你可以在msdn library中看到它。

在那里,你可以看到参数到达Main(string[] args),这是一个字符串,你可以读取作为argument = args[i],其中i是你想要的参数的编号。

例如,如果你在命令行中调用args[2]是text.exe test here there

args[2]将是here。

请记住,args[i]始终是一个字符串。

希望这有所帮助。


但这并不是您正在编写的应用程序。 - manojlds
2
嗨,Manoj,感谢您的帮助。但是我实际想知道的是,在DOS的命令行中是否有任何方法。实际上,我已经通过使用wmic和Tasklist找到了一种方法。 - Deepak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接