如图片展示的那样

https://learn.microsoft.com/zh-cn/sysinternals/downloads/sync
@echo off
setlocal EnableDelayedExpansion
title USB 占用侦探 V2.0 - 全局搜索版
color 1f
:: --- 1. 检查管理员权限 ---
net session >nul 2>&1
if %errorlevel% neq 0 (
echo.
echo [警告] 请右键点击本脚本,选择"以管理员身份运行"!
echo 只有管理员权限才能查看到所有系统进程。
echo.
pause
exit
)
:start
cls
echo ========================================================
echo USB 占用检测工具 V2.0 (自动搜索 Handle 工具)
echo ========================================================
echo.
:: --- 2. 智能搜索工具 (优先搜系统 PATH,再搜当前目录) ---
set tool=
:: 尝试在 PATH 中搜索 handle64
where handle64.exe >nul 2>&1
if %errorlevel% equ 0 (
set tool=handle64.exe
echo [状态] 已在系统路径中找到: handle64.exe
goto check_drive
)
:: 尝试在 PATH 中搜索 handle
where handle.exe >nul 2>&1
if %errorlevel% equ 0 (
set tool=handle.exe
echo [状态] 已在系统路径中找到: handle.exe
goto check_drive
)
:: 尝试在当前目录下搜索
if exist "%~dp0handle64.exe" (
set tool="%~dp0handle64.exe"
echo [状态] 已在当前目录找到: handle64.exe
goto check_drive
)
if exist "%~dp0handle.exe" (
set tool="%~dp0handle.exe"
echo [状态] 已在当前目录找到: handle.exe
goto check_drive
)
:: --- 如果都找不到 ---
if "%tool%"=="" (
echo.
echo [错误] 依然找不到 handle.exe 或 handle64.exe!
echo.
echo 请确认以下任一条件满足:
echo 1. handle.exe 已经放入 C:\Windows\System32 (或其他 PATH 目录)。
echo 2. 或者,handle.exe 就在本脚本的同一个文件夹里。
echo.
echo 输入命令 'where handle.exe' 进行测试。
pause
exit
)
:check_drive
echo.
set /p drive="请输入 U 盘盘符 (例如 E,不带冒号): "
set drive=%drive::=%
echo.
echo 正在扫描 %drive%: 盘的占用情况...
:: --- 3. 第一次运行协议 (静默接受 EULA) ---
%tool% -accepteula -s >nul 2>&1
:: --- 4. 核心命令:输出日志 ---
echo 正在生成报告...
echo --------------------------------------------------- > USB_Lock_Log.txt
echo 扫描工具: %tool% >> USB_Lock_Log.txt
echo 扫描时间: %date% %time% >> USB_Lock_Log.txt
echo 目标盘符: %drive%:\ >> USB_Lock_Log.txt
echo --------------------------------------------------- >> USB_Lock_Log.txt
echo. >> USB_Lock_Log.txt
:: 执行命令并将结果追加到日志
%tool% -a -u %drive%: >> USB_Lock_Log.txt
:: --- 5. 完成与反馈 ---
echo.
echo 扫描完成!正在打开日志文件...
start notepad USB_Lock_Log.txt
echo.
echo ========================================================
echo 请查看弹出的记事本窗口。
echo 如果日志是空的,说明没有明显的文件句柄占用,
echo 或者你需要重新拔插一下试试。
echo ========================================================
echo.
pause
注意
代码不太完善 ,会显示无关的进程。