获取正在运行的进程的完整路径并将其保存到变量中

时间:2015-03-29 18:16:21

标签: batch-file

我想获取正在运行的进程的完整路径并将其保存到变量中。 让我们说我想获得一个名为notepad.exe的文件的完整路径。

我试图寻找解决方案,但我找不到任何解决方案。 我认为可以使用tasklist命令或类似的东西来完成它。 我不确定。

有什么想法吗?

3 个答案:

答案 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