Board logo

标题: [已解决]如何获取进程路径? [打印本页]

作者: luckboy45     时间: 2008-4-19 17:57    标题: [已解决]如何获取进程路径?

比如我要获得进程名为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 ]
作者: luckboy45     时间: 2008-4-19 21:12
汗....难道没兄弟会帮我写出来么?貌似都不在...
作者: bat-zw     时间: 2008-4-19 21:31    标题: 有一个思路:

提供一个思路吧:使用tasklist输出所有进程列表,但问题是我这里列表没有程序的路径啊,不知道兄弟那里有不?
作者: abcd     时间: 2008-4-19 21:44

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

作者: luckboy45     时间: 2008-4-27 14:10
4楼兄弟,貌似你对WMIC比较在行,有好的资料推荐点或者给大家分享下啊!~

[ Last edited by luckboy45 on 2008-4-27 at 04:11 PM ]
作者: plp626     时间: 2008-4-27 14:33
vbs我不会,但确实很实用,效率高。
我转个vbs的:
for each ps in getobject _
("winmgmts:\\.\root\cimv2:win32_process").instances_
wscript.echo ps.handle&vbtab&ps.name&vbtab&ps.executablepath:next
作者: huahua0919     时间: 2008-4-27 14:45
看了下。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 ]
作者: luckboy45     时间: 2008-4-27 15:47
很遗憾,楼上兄弟,代码提示...无效的过程调用或参数...行11,第1个字符.....
因为VBS的滥用,容易引起杀软报毒,所以还是希望能有高人写出BAT版...
毕竟,对于BAT我还懂一点,VBS完全搞不明白...汗....
作者: huahua0919     时间: 2008-4-27 16:05
4楼的代码应该有用。
作者: luckboy45     时间: 2008-4-27 16:10
呵呵,多谢兄弟提醒,我试了另一个进程,成功了,4楼兄弟对WMIC很在行的说...呵呵,可是怎么才能实现用CD定位到该文件夹,然后用DIR列出该文件夹下的所有文件呢?

还有,路径列出后如何输出到文本文件?麻烦各位兄弟帮忙了!~
作者: huahua0919     时间: 2008-4-27 16:14
把你定位到的路径中的“\”替换成“.”
然后取出%%~ni
就是你的文件所在文件夹
作者: luckboy45     时间: 2008-4-27 16:19
我是这样写的...
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,请帮忙写出来学习下!~
作者: huahua0919     时间: 2008-4-27 16:33

@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

作者: luckboy45     时间: 2008-4-27 16:38
谢谢兄弟了!~学习了点东西,感谢你的耐心指导,呵呵!~