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

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

[复制链接]
 楼主| 发表于 2008-10-6 22:04:26 | 显示全部楼层
谢谢版主,问题解决了,是因为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
复制代码
发表于 2008-10-6 22:13:58 | 显示全部楼层
XP下的for会自动忽略空行的。就算是for没有过滤空行,最后也应该是set "var=",而不会是set "var=C:\"
难道是Vista下的for结果不同?
而且你的if not defined var set "var=%%~dpa"也达不到过滤空行的目的
发表于 2008-10-7 19:24:46 | 显示全部楼层
楼主今天上线为什么不回复呢?
是Vista系统的测试一下直接在CMD中运行以下语句:
  1. for /f "skip=1 delims=" %a in ('wmic process where "name='qq.exe'" get ExecutablePath') do set "var=%~dpa"
复制代码
我的XP SP3只有一行结果:set "var=E:\Program Files\Tencent\QQ\"
发表于 2008-10-7 22:35:16 | 显示全部楼层
哇 版主们水平都不错哦,都很热心,不错,又学习了
 楼主| 发表于 2008-10-11 19:47:50 | 显示全部楼层

回复 18楼 的帖子

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

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

看我的图片,你或许能明白我为什么要加“if not defined var set "var=%%~dpa" ”了。
我开了两个QQ,所以有两个路径。
发表于 2008-10-11 20:40:21 | 显示全部楼层
楼上的试试直接运行
for /f "skip=1 delims=" %a in ('wmic process where "name='qq.exe'" get ExecutablePath') do echo %~dpa
看看显示什么。难道Vista下的for命令结果真的不同?
 楼主| 发表于 2008-10-11 20:56:18 | 显示全部楼层

回复 21楼 的帖子

贴图,不写字了,看着直观!
说明一下,我开了两个QQ,所以有两个路径。
 楼主| 发表于 2008-10-12 22:37:56 | 显示全部楼层
看错了,又多发了一张图
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 08:23 , Processed in 0.021095 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表