我想获取正在运行的进程的完整路径并将其保存到变量中。 让我们说我想获得一个名为notepad.exe的文件的完整路径。
我试图寻找解决方案,但我找不到任何解决方案。 我认为可以使用tasklist命令或类似的东西来完成它。 我不确定。
有什么想法吗?
答案 0 :(得分:3)
如果您正在测试的可执行文件位于%PATH%
中,则最简单的解决方案是使用~$PATH
循环的for
扩展。 (在控制台窗口中,help for
获取完整详细信息。)
for %%I in (notepad.exe) do set "exepath=%%~$PATH:I"
echo %exepath%
如果您需要直接从流程中获取路径,可以使用wmic
执行此操作。
wmic process where "name='notepad.exe'" get ExecutablePath
您可以使用for /f
循环将结果捕获到变量。 WMI查询结果通常以奇怪的编码(UCS-2 Little Endian,如果我没记错的话)编码,因此有助于查询一次性列以防止捕获中的奇怪。
@echo off
setlocal
for /f "tokens=2 delims=," %%I in (
'wmic process where "name='notepad.exe'" get ExecutablePath^,Handle /format:csv ^| find /i "notepad.exe"'
) do set "exepath=%%~I"
echo %exepath%
答案 1 :(得分:0)
不确定DOS命令,但您可以尝试Get-WmiObject
powerShell命令行开关,如下所示
(Get-WmiObject -class Win32_Process -Filter 'Name="notepad.exe"').path.SubString(0, (Get-WmiObject -class Win32_Process -Filter 'Name="notepad.exe"').path.LastIndexOf('\'))
这将返回结果
C:\Windows\system32
答案 2 :(得分:0)
我认为你想在PowerShell中做到这一点我们可以做到这一点
$a=( Get-Process -ProcessName * | Format-List path )
获取$ a中的所有路径 只需在cmd中执行
powershell -command Get-Process -ProcessName * ^| Format-List path