Board logo

标题: [系统相关] 【已解决】Handle的批处理问题 [打印本页]

作者: w281565    时间: 2021-12-31 22:43     标题: 【已解决】Handle的批处理问题

本帖最后由 w281565 于 2022-1-9 19:32 编辑

网站(sysinternals)上另外一个工具 Handle.exe,这个是专门用来处理句柄的。

手动执行过程
用cmd管理员权限运行进入handle所在的文件夹
打开cmd后,输入cd /d c:\Users\hiko\Desktop\Handle回车。
查找需要关闭的句柄"RAN2_ONLINE_XV"的句柄。
handle.exe -a "RAN2_ONLINE_XV"
执行结果
Game.exe           pid: 12208   type: Mutant         188: \Sessions\1\BaseNamedObjects\RAN2_ONLINE_XV
关闭pid:12208、188句柄。
handle.exe -p 12208 -c 188 -y
然后关闭句柄。
上面如何写批处理能帮我写代码吗?
自动获取pid、句柄值关闭句柄。
pid: 12208跟188是浮动
作者: idwma    时间: 2022-1-1 16:13

本帖最后由 idwma 于 2022-1-1 16:14 编辑
  1. powershell "$a='c:\Users\hiko\Desktop\Handle\handle.exe'; (&$a) -match '\D*(\d+)\D*(\d+).*'; &$a -p $matches[1] -c $matches[2] -y"
复制代码

作者: 5i365    时间: 2022-1-3 06:41

回复 2# idwma

handle下载页面
https://docs.microsoft.com/zh-cn/sysinternals/downloads/handle

我试了一下, 报错
---------------------------------
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\Administrator>powershell "$a='C:\Users\Administrator\Desktop\handle.exe'; (&$a) -match '\D*(\d+)\D*(\d+).*'; &$
a -p $matches[1] -c $matches[2] -y"
Nthandle v4.22 - Handle viewer
Copyright (C) 1997-2019 Mark Russinovich
You can recover from sysinternals and its suppliers only direct damages up to U.S.$5.00.You cannot recover any other dam
ages, including consequential, lost profits, special, indirect or incidental damages.
                   LIMITATION DES DOMMAGES - INTéRêTS ET EXCLUSION DE RESPONSABILITé POUR LES DOMMAGES.Vous pouvez obten
ir de Sysinternals et de ses fournisseurs une indemnisation en cas de dommages directs uniquement à hauteur de 5, 00 $ U
S.Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y compris les dommages spéciaux, indirects o
u accessoires et pertes de bénéfices.
Cannot index into a null array.
At line:1 char:84
+ ... $a) -match '\D*(\d+)\D*(\d+).*'; &$a -p $matches[1] -c $matches[2] -y
+                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: ( [], RuntimeException
    + FullyQualifiedErrorId : NullArray
作者: 5i365    时间: 2022-1-3 06:43

本帖最后由 5i365 于 2022-1-3 06:56 编辑

回复 2# idwma


不知道这个具体是干什么的, 看看了官方说明,

我想知道这个工具,可以关闭软件吗? 例如,我想关闭正在打开的 酷狗音乐 , 我需要的不是杀死它, 而是正常退出程序,

或者有什么别的工具, 可以实现正常关闭软件的功能吗?

找一个关于用句柄关闭程序的文章:
https://bbs.csdn.net/topics/310223983

还有一篇, 但不是关闭窗口,是关闭显示器
https://www.pstips.net/how-to-sw ... ith-powershell.html
作者: Batcher    时间: 2022-1-3 20:28

回复 1# w281565
  1. @echo off
  2. for /f "tokens=6 delims=: " %%i in ('handle.exe -a "RAN2_ONLINE_XV"') do (
  3.     set "HandleID=%%i"
  4. )
  5. echo Find handle ID: %HandleID%
  6. handle.exe -c %HandleID% -y
  7. pause
复制代码

作者: Batcher    时间: 2022-1-4 17:04

回复 1# w281565


    如果仍有其它问题,请直接回帖说明,不需要发私信给我,谢谢。
作者: w281565    时间: 2022-1-4 19:23

回复 6# Batcher

'handle.exe' 不是内部或外部命令、可执行的程式或批次档。
Find handle ID:
'handle.exe' 不是内部或外部命令、可执行的程式或批次档。
请按任意键继续 . . .
作者: Batcher    时间: 2022-1-5 11:47

回复 7# w281565


handle.exe放在C:\Windows\System32目录下
或者handle.exe和bat脚本放在同一个目录下
作者: w281565    时间: 2022-1-5 19:11

回复 8# Batcher

handle.exe放在C:\Windows\System32目录下


作者: Batcher    时间: 2022-1-6 19:37

回复 9# w281565


    5楼代码第2行 handle.exe 改成完整路径例如 "C:\Windows\System32\handle.exe"
作者: w281565    时间: 2022-1-6 21:18

回复 10# Batcher
改了一样问题
作者: Batcher    时间: 2022-1-7 11:46

回复 11# w281565


    请把你最新的bat脚本传到网盘上我试试
作者: Batcher    时间: 2022-1-8 09:54

回复 11# w281565
  1. @echo off
  2. dir C:\Windows\System32\handle.exe
  3. for /f "tokens=3,6 delims=: " %%i in ('C:\Windows\System32\handle.exe -a "RAN2_ONLINE_XV"') do (
  4.     set "PID=%%i"
  5.     set "HandleID=%%j"
  6. )
  7. echo Find process ID: %PID%
  8. echo Find handle ID: %HandleID%
  9. C:\Windows\System32\handle.exe -p %PID% -c %HandleID% -y
  10. pause
复制代码

作者: w281565    时间: 2022-1-8 11:06

回复 13# Batcher


    'C:\Windows\System32\handle.exe" -a "txt' 不是内部或外部命令、可执行的程式或批次
档。
Find process ID:
Find handle ID:
作者: Batcher    时间: 2022-1-9 12:48

回复 14# w281565


    13楼代码已更新,你再试试呢。
作者: w281565    时间: 2022-1-9 19:09

回复 15# Batcher
  1. @echo off
  2. %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
  3. dir C:\Windows\System32\handle.exe
  4. for /f "tokens=3,6 delims=: " %%i in ('C:\Windows\System32\handle.exe -a "RAN2_ONLINE_XV"') do (
  5.     set "PID=%%i"
  6.     set "HandleID=%%j"
  7. )
  8. echo Find process ID: %PID%
  9. echo Find handle ID: %HandleID%
  10. C:\Windows\System32\handle.exe -p %PID% -c %HandleID% -y
  11. pause
复制代码
我加上第一行能双击bat直接以管理员身份启动了,感謝Batcher




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2