[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理怎样获取运行中的进程的路径?

如题所示,

已经进程的映像名,如何提取此进程的路径?

运行环境XP系统CMD。

我在google上怎么也找不到,谢谢!

TOP

不好意思,还有一个问题,

虽然路径找到了,但我只想要从盘符到可执行文件的上一级文件夹,并赋值到变量Var里,该怎么写?

TOP

没有简单点的代码吗?

还是要谢谢!

TOP

回复 5楼 的帖子

不成功啊,%var%中得到的是这段代码所在的批处理的路径,怎么回事啊?急!

TOP

我刚看到回帖时,测试过,没问题,但那时是在XP sp2测试的,
现在Vista下,测试不通过
我在命令行下的测试发上来,大家看看:

  1. C:\>for /f "skip=1 delims=" %a in ('wmic process where "name='qq.exe'" get Execu
  2. tablePath') do set "var=%~dpa"
  3. C:\>set "var=D:\Program Files\OICQ\QQ\"
  4. C:\>set "var=D:\Program Files\OICQ\QQ\"
  5. C:\>set "var=D:\Program Files\OICQ\QQ\"
  6. C:\>set "var=C:\"
  7. C:\>
复制代码


我开了三个QQ,所以会有三个路径,但不知道为什么倒数第二行会出现“set "var=C:\" ”,这个变成了最终的Var值,但这并不是我想要的,
还有,要是和系统有关系,我要在XP和Vista下都可以用的。

TOP

回复 13楼 的帖子

D:\Program Files\OICQ\QQ\QQ.exe
D:\Program Files\OICQ\QQ\QQ.exe
D:\Program Files\OICQ\QQ\QQ.exe

TOP

谢谢版主,问题解决了,是因为For没有过虑空行,VAR的最后一个值是CMD的当前路径,

我已经找到解决办法了:

  1. @echo off
  2. set set "var="
  3. for /f "skip=1 delims=" %%a in ('wmic process where "name='qq.exe'" get  ExecutablePath') do (
  4.     if not defined var set "var=%%~dpa"
  5. )
  6. set "var=%var:~,-1%"
  7. echo %var%
  8. echo.&pause
复制代码

TOP

回复 18楼 的帖子

在CMD下执行你的代码后,再echo %var%,结果是:
C:\

我在进入CMD后执行了CD\,否则,echo %var%的结果是:
C:\users\Administrator\

看我的图片,你或许能明白我为什么要加“if not defined var set "var=%%~dpa" ”了。
我开了两个QQ,所以有两个路径。

TOP

回复 21楼 的帖子

贴图,不写字了,看着直观!
说明一下,我开了两个QQ,所以有两个路径。

TOP

看错了,又多发了一张图

TOP

返回列表