U盘全能修复工具批处理命令版
闲着没有事看到网络上有一款U盘全能修复工具批处理命令版不错,看了一下批处理写的有点问题就修复了一下。
主要改进:
1、管理员权限检查 - 确保有足够权限执行操作
2、输入验证 - 防止无效或危险的输入
3、磁盘编号确认 - 减少误操作系统磁盘的风险
4、更安全的格式化 - 使用exFAT格式,兼容性更好
5、磁盘列表功能 - 帮助用户确认磁盘编号
6、错误处理 - 更完善的错误检查和反馈
7、进度提示 - 让用户知道当前执行步骤
建议用户在使用前备份重要数据,并确保正确识别U盘磁盘编号,避免误操作导致数据丢失。
@echo off
title U盘全能修复工具 -呆叔
mode con: cols=85 lines=30
color 0A
:: 检查管理员权限
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' neq '0' (
echo 请以管理员身份运行此工具!
pause
exit /b 1
)
:MAIN
cls
echo.
echo ================================================
echo U盘全能修复工具 v2.0 -呆叔
echo ================================================
echo.
echo 请选择要修复的问题类型:
echo ----------------------------
echo 1. U盘文件无法复制
echo 2. U盘提示需要格式化
echo 3. U盘显示0字节无法格式化
echo 4. U盘插入电脑无显示
echo 5. 查看磁盘信息
echo 6. 退出工具
echo.
echo ================================================
set /p choice=" 请输入选项 (1-6): "
if "%choice%"=="1" goto PROBLEM1
if "%choice%"=="2" goto PROBLEM2
if "%choice%"=="3" goto PROBLEM3
if "%choice%"=="4" goto PROBLEM4
if "%choice%"=="5" goto LIST_DISKS
if "%choice%"=="6" exit
echo 无效输入,请重新选择
timeout /t 2 >nul
goto MAIN
:LIST_DISKS
cls
echo.
echo [磁盘列表]
echo ------------------------------------------------
echo 正在获取磁盘信息...
echo ------------------------------------------------
(
echo list disk
echo list volume
) >list_disks.txt
diskpart /s list_disks.txt
del list_disks.txt
echo.
pause
goto MAIN
:PROBLEM1
call :GET_DRIVE_LETTER
if errorlevel 1 goto MAIN
cls
echo.
echo [修复U盘文件无法复制问题]
echo ------------------------------------------------
echo 正在执行修复...
echo ------------------------------------------------
echo.
echo 步骤1: 检查磁盘错误...
chkdsk %drive% /f
if errorlevel 1 (
echo 磁盘检查失败!
pause
goto MAIN
)
echo.
echo 步骤2: 清除只读属性...
attrib -r -s -h %drive%\*.* /s /d >nul 2>&1
echo 步骤3: 重置安全权限...
icacls %drive%\*.* /reset /t /c /q >nul 2>&1
echo.
echo 修复完成!建议重新插拔U盘。
pause
goto MAIN
:PROBLEM2
call :GET_DRIVE_LETTER
if errorlevel 1 goto MAIN
cls
echo.
echo [修复U盘提示需要格式化问题]
echo ------------------------------------------------
echo 正在尝试修复文件系统...
echo ------------------------------------------------
echo.
echo 正在执行深度修复...
chkdsk %drive% /r /x
echo.
if errorlevel 1 (
echo 修复失败,建议备份数据后格式化。
) else (
echo 修复成功!请重新插拔U盘。
)
pause
goto MAIN
:PROBLEM3
cls
echo.
echo [修复U盘0字节无法格式化问题]
echo ================================================
echo 警告:此操作将清除U盘所有数据!
echo 请确认以下信息:
echo ================================================
echo.
echo 请先查看磁盘列表确认U盘编号:
call :LIST_DISKS
echo.
:GET_DISK_NUM
set /p disknum="请输入U盘磁盘编号: "
if "%disknum%"=="" goto GET_DISK_NUM
echo %disknum%|findstr /r "^[0-9][0-9]*$" >nul || (
echo 请输入有效的数字!
goto GET_DISK_NUM
)
echo.
echo ================================================
echo 警告:即将清理磁盘 %disknum% 的所有数据!
echo 请确认这是您的U盘而不是系统硬盘!
echo ================================================
set /p confirm="确认继续吗?(Y/N): "
if /i not "%confirm%"=="Y" goto MAIN
echo.
echo 正在执行修复...
(
echo select disk %disknum%
echo clean
echo create partition primary
echo format fs=exFAT quick label="USB_DISK"
echo assign
) >format_disk.txt
diskpart /s format_disk.txt
del format_disk.txt
echo.
echo 操作完成!U盘已重新格式化为exFAT格式。
pause
goto MAIN
:PROBLEM4
cls
echo.
echo [修复U盘插入无显示问题]
echo ------------------------------------------------
echo 正在重新分配驱动器号...
echo ------------------------------------------------
echo.
call :LIST_DISKS
:GET_NEW_DRIVE
set /p disknum="请输入U盘磁盘编号: "
if "%disknum%"=="" goto GET_NEW_DRIVE
:GET_DRIVE_LETTER
set /p newdrive="请输入新盘符(不要加冒号): "
if "%newdrive%"=="" goto GET_DRIVE_LETTER
set "newdrive=%newdrive:~0,1%"
echo.
echo 正在分配驱动器号...
(
echo select disk %disknum%
echo list partition
echo select partition 1
echo assign letter=%newdrive%
) >assign_drive.txt
diskpart /s assign_drive.txt
del assign_drive.txt
echo 操作完成!请检查 %newdrive%: 驱动器
pause
goto MAIN
:GET_DRIVE_LETTER
setlocal
:RETRY_DRIVE
set /p drive="请输入U盘盘符(例如 G): "
if "%drive%"=="" goto RETRY_DRIVE
set "drive=%drive:~0,1%"
set "drive=%drive%:"
:: 验证驱动器存在且不是系统盘
if not exist %drive%\NUL (
echo 错误:驱动器 %drive% 不存在!
endlocal
exit /b 1
)
:: 检查是否是系统盘
for %%i in (C D) do (
if /i "%drive%"=="%%i:" (
echo 警告:%drive% 可能是系统盘!
set /p confirm="确认这是U盘吗?(Y/N): "
if /i not "%confirm%"=="Y" (
endlocal
exit /b 1
)
)
)
endlocal & set "drive=%drive%"
exit /b 0
以上代码保存在TXT文本里,在把后缀. txt改成.bat使用。
好了这次文章就到这里了,有不懂可以留言哦!·呆呆blog-zaibk网络写本会及时回复的!

发表评论 取消回复