批处理如何获取进程所在目录,不是文件路径

2024-11-22 05:58:19
推荐回答(2个)
回答1:

就按你的方法 剩下的就是处理 怎么从 路径里提取 最后一个文件名了
方法 1
for /f "tokens=1,2,3,4,5,6,7,8 delims=\" %%i in ('echo %path%') do (
if "%%j"=="" echo %%i & goto :eo
if "%%k"=="" echo %%j & goto :eo
if "%%l"=="" echo %%k & goto :eo
if "%%m"=="" echo %%l & goto :eo
if "%%n"=="" echo %%m & goto :eo
if "%%o"=="" echo %%n & goto :eo
if "%%p"=="" echo %%o & goto :eo
if "%%q"=="" echo %%p & goto :eo
)
:eo

方法 2

for /l %%i in (2,1,40) do if "!path:~-%%i,1!"=="\" (set /a b=%%i-1 & goto :eo)
:eo
echo !path:~-%b%,-1!

把 这两段分别放在你写的最后一个PAUSE的前面
有什么不明白的 给我留言就可以了
第二种方法 @ECHO OFF 再加个 setlocal enabledelayedexpansion 就可以了

回答2:

我花了3秒钟看题:

@echo off
set "task=qq.exe"
echo 开始查询进程是否存在
tasklist|find /i "%task%">nul
if %errorlevel% equ 0 (

for /f "eol= delims== tokens=2" %%i in ('wmic process where "name='%task%'" get executablepath /value') do (
echo 您查找的进程 %task% 的路径是:%%~dpi
set path=%%~dpi
)
)
pause