中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: [已解决]如何获取进程路径? 上一主题 | 下一主题
luckboy45
中级用户




积分 487
发帖 212
注册 2007-4-1
状态 离线
『楼 主』:  [已解决]如何获取进程路径?

比如我要获得进程名为task.exe的路径,并用CD定位到该文件夹,然后用DIR列出该文件夹下的所有文件,P处理如何实现?

请帮忙完善以下代码,先谢谢了!~

for /f "delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do (
    set var=%%i
    set drive=!var:~-2!
    fsutil fsinfo drivetype !drive!|find "固定">nul && (
        for /f "tokens=*" %%j in ('dir /a-d /b /s !drive!\task.exe 2^>nul') do if not "%%j"=="" goto scan0
    )   
)
goto :EOF
:scan0
echo task.exe它位于......
pause

[ Last edited by luckboy45 on 2008-4-27 at 04:39 PM ]



逍遥@浪子@反病毒
2008-4-19 17:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复
luckboy45
中级用户




积分 487
发帖 212
注册 2007-4-1
状态 离线
『第 2 楼』:  

汗....难道没兄弟会帮我写出来么?貌似都不在...



逍遥@浪子@反病毒
2008-4-19 21:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 3 楼』:  有一个思路:

提供一个思路吧:使用tasklist输出所有进程列表,但问题是我这里列表没有程序的路径啊,不知道兄弟那里有不?



批处理之家新域名:www.bathome.net
2008-4-19 21:31
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 4 楼』:  


wmic process where name="task.exe" get executablepath /value


2008-4-19 21:44
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
luckboy45
中级用户




积分 487
发帖 212
注册 2007-4-1
状态 离线
『第 5 楼』:  

4楼兄弟,貌似你对WMIC比较在行,有好的资料推荐点或者给大家分享下啊!~

[ Last edited by luckboy45 on 2008-4-27 at 04:11 PM ]



逍遥@浪子@反病毒
2008-4-27 14:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 6 楼』:  

vbs我不会,但确实很实用,效率高。
我转个vbs的:
for each ps in getobject _
("winmgmts:\\.\root\cimv2:win32_process").instances_
wscript.echo ps.handle&vbtab&ps.name&vbtab&ps.executablepath:next

   此帖被 +1 点积分    点击查看详情   
评分人:【 batdos 分数: +1  时间:2009-9-19 01:05




山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2008-4-27 14:33
查看资料  发短消息 网志   编辑帖子  回复  引用回复
huahua0919
银牌会员




积分 1608
发帖 780
注册 2007-10-7
状态 离线
『第 7 楼』:  

看了下。VBS好用
Dim fso, f, f1, fc, s
set fso=Createobject("Scripting.filesystemobject")
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_process where name='cmd.exe'")
For Each objItem in colItems
if objitem.ExecutablePath<>"" then
a=fso.getparentfoldername(objitem.ExecutablePath)
end if
Next

Set f = fso.GetFolder(a)
Set fc = f.Files
set fd = f.subfolders
For Each f1 in fc
      s = s & f1.name&chr(13)
next
for each  f2 in fd
      s=s&f2.name&chr(13)
   next
msgbox s
这下全给你列出来,只是文件太多
只要把你的进程名字列在where name后面就行了

[ Last edited by huahua0919 on 2008-4-27 at 03:22 PM ]

2008-4-27 14:45
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
luckboy45
中级用户




积分 487
发帖 212
注册 2007-4-1
状态 离线
『第 8 楼』:  

很遗憾,楼上兄弟,代码提示...无效的过程调用或参数...行11,第1个字符.....
因为VBS的滥用,容易引起杀软报毒,所以还是希望能有高人写出BAT版...
毕竟,对于BAT我还懂一点,VBS完全搞不明白...汗....



逍遥@浪子@反病毒
2008-4-27 15:47
查看资料  发短消息 网志   编辑帖子  回复  引用回复
huahua0919
银牌会员




积分 1608
发帖 780
注册 2007-10-7
状态 离线
『第 9 楼』:  

4楼的代码应该有用。

2008-4-27 16:05
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
luckboy45
中级用户




积分 487
发帖 212
注册 2007-4-1
状态 离线
『第 10 楼』:  

呵呵,多谢兄弟提醒,我试了另一个进程,成功了,4楼兄弟对WMIC很在行的说...呵呵,可是怎么才能实现用CD定位到该文件夹,然后用DIR列出该文件夹下的所有文件呢?

还有,路径列出后如何输出到文本文件?麻烦各位兄弟帮忙了!~



逍遥@浪子@反病毒
2008-4-27 16:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复
huahua0919
银牌会员




积分 1608
发帖 780
注册 2007-10-7
状态 离线
『第 11 楼』:  

把你定位到的路径中的“\”替换成“.”
然后取出%%~ni
就是你的文件所在文件夹

2008-4-27 16:14
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
luckboy45
中级用户




积分 487
发帖 212
注册 2007-4-1
状态 离线
『第 12 楼』:  

我是这样写的...
wmic process where name="tm.exe" get executablepath /value >>c:\12.txt
下面是输出到12.TXT里面的内容

ExecutablePath=C:\Program Files\Tencent\QQ\TMDlls\TM.exe


ExecutablePath=C:\Program Files\Tencent\QQ\TMDlls\TM.exe

问题是我要自动实现提取C:\Program Files\Tencent\QQ\TMDlls\下面的所有文件并输出文件列表到22.TXT,请帮忙写出来学习下!~



逍遥@浪子@反病毒
2008-4-27 16:19
查看资料  发短消息 网志   编辑帖子  回复  引用回复
huahua0919
银牌会员




积分 1608
发帖 780
注册 2007-10-7
状态 离线
『第 13 楼』:  


@echo off
for /f "skip=6 delims== tokens=2" %%i in ('wmic process where "name='cmd.exe'" get executablepath /value') do (
echo %%~dpi
set path=%%~dpi
call :xp %%path%%
)
:xp
dir /a/b %~1
pause


2008-4-27 16:33
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
luckboy45
中级用户




积分 487
发帖 212
注册 2007-4-1
状态 离线
『第 14 楼』:  

谢谢兄弟了!~学习了点东西,感谢你的耐心指导,呵呵!~



逍遥@浪子@反病毒
2008-4-27 16:38
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: