使用 wmic 获取传递给可执行文件的参数
Getting the arguments passed to a executable using wmic
我正在尝试获取由另一个程序启动的可执行文件的命令行参数。
我尝试了 this 答案中提到的命令,但我无法理解语法:(
我正在尝试获取进程的命令行参数,我有 PID 和进程名称,在这种情况下,我正在尝试获取用于测试命令的 ping 命令的参数...
提前致谢:)
试试这个:
wmic process where "name='ping.exe'" get commandline /format:list
或者如果您更喜欢通过 PID 查询:
wmic process where "processid='NNNN'" get commandline /format:list
wmic
使用一种叫做WQL的查询语言,类似于SQL。您可以使用 wmic process where "name like 'ping%'" get commandline
之类的通配符(但一定要在批处理脚本中将 %%
加倍),改变输出样式(列表、csv,甚至 html)和其他魔术。有关详细信息,请从命令行查看 wmic /?
。
如果要将任何命令的输出捕获到变量,请使用 for /f
循环。 help for
在 cmd 控制台中获取更多信息。在 cmd 控制台中试试这个:
for /f "delims=" %I in ('wmic process where "name='ping.exe'" get commandline /format:list ^| find "="') do set "%I"
您确实会注意到一些非常奇怪的事情。该命令的输出类似于:
" \Users\username>set "CommandLine=ping -n 60 localhost
右引号打印在行的开头!这不是很奇怪吗?那是因为 WMI 查询结果是用 UCS-2 LE 编码的,而不是 ANSI。
我喜欢使用的一种解决方法是使用 /format:csv
并向查询添加一次性列。
从批处理脚本中:
for /f "tokens=2 delims=," %%I in (
'wmic process where "name='ping.exe'" get commandline^,status /format:csv'
) do set "commandline=%%I"
...这样你就不会捕获任何对变量的无形背叛。
我正在尝试获取由另一个程序启动的可执行文件的命令行参数。
我尝试了 this 答案中提到的命令,但我无法理解语法:(
我正在尝试获取进程的命令行参数,我有 PID 和进程名称,在这种情况下,我正在尝试获取用于测试命令的 ping 命令的参数...
提前致谢:)
试试这个:
wmic process where "name='ping.exe'" get commandline /format:list
或者如果您更喜欢通过 PID 查询:
wmic process where "processid='NNNN'" get commandline /format:list
wmic
使用一种叫做WQL的查询语言,类似于SQL。您可以使用 wmic process where "name like 'ping%'" get commandline
之类的通配符(但一定要在批处理脚本中将 %%
加倍),改变输出样式(列表、csv,甚至 html)和其他魔术。有关详细信息,请从命令行查看 wmic /?
。
如果要将任何命令的输出捕获到变量,请使用 for /f
循环。 help for
在 cmd 控制台中获取更多信息。在 cmd 控制台中试试这个:
for /f "delims=" %I in ('wmic process where "name='ping.exe'" get commandline /format:list ^| find "="') do set "%I"
您确实会注意到一些非常奇怪的事情。该命令的输出类似于:
" \Users\username>set "CommandLine=ping -n 60 localhost
右引号打印在行的开头!这不是很奇怪吗?那是因为 WMI 查询结果是用 UCS-2 LE 编码的,而不是 ANSI。
我喜欢使用的一种解决方法是使用 /format:csv
并向查询添加一次性列。
从批处理脚本中:
for /f "tokens=2 delims=," %%I in (
'wmic process where "name='ping.exe'" get commandline^,status /format:csv'
) do set "commandline=%%I"
...这样你就不会捕获任何对变量的无形背叛。