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

来源:百度知道 编辑:UC知道 时间:2024/06/10 12:38:26
想获得文件所在目录,但现在只会获取进程对应的路径..求解
不一定按我的思路 能办到的都行 感谢先
代码如下
@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% 的路径是:%%~fi
set path=%%~fi
)
)
pause

就按你的方法 剩下的就是处理 怎么从 路径里提取 最后一个文件名了
方法 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 就可以了

我花了3秒钟看题:

@echo off
set "task=qq.exe"
echo 开始