0%

CMD 修复电脑磁盘图标

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
::显示或者隐藏命令 //ECHO [ON | OFF]
@ ECHO OFF
REM 修复电脑磁盘图标。
::设置颜色为 淡蓝色背景色,白色前景色
COLOR 9F
::设置运行窗口标题
TITLE XP 、Win7电脑磁盘图标--修复
::提示以管理员身份运行
ECHO ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
ECHO ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
ECHO ☆ ☆
ECHO ☆ 为了能够成功修复,请使用管理员身份运行 [鼠标右键单击--以管理员身份运行] ☆
ECHO ☆ ☆
ECHO ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

::检测系统版本,如果需要并跳转到相应的系统标签处进行执行
VER|FINDSTR /I "5.1" && GOTO XP || GOTO Win7
:: XP 系统的方案
:XP
::说明可能导致此问题的相关原因
ECHO 主要症状:
ECHO 磁盘图标显示未知或者为其他图标。
ECHO 1.可能由于注册表异常导致。
ECHO 2.相关服务未启用。
ECHO 3.设置了磁盘分区的Antorun.inf。
ECHO 4.更改了shell32.dll中分区图标,或者shell32.dll文件损坏。
ECHO 5.缓存过旧导致的异常。
ECHO =====================================
::信息提示并作出选择
::暂不使用此句 CHOICE /C YN /T 10 /D Y /M "您好,键入 Y 执行修复,N 退出,如未操作,默认十秒后自动执行修复。
set /P IS=您好,键入 Y 执行修复,N 退出。(不区分大小写,输入错误将直接退出) 输入后回车
::判断输入的字符
::暂不使用此句 IF ERRORLEVEL 2 (EXIT) ELSE (GOTO R)
IF /I %IS% EQU Y (GOTO R) ELSE (EXIT)
:: Win7 系统的方案
:Win7
::说明可能导致此问题的相关原因
ECHO 主要症状:
ECHO.
ECHO 磁盘图标显示未知或者为其他图标。
ECHO.
ECHO 1.可能由于注册表异常导致。
ECHO.
ECHO 2.相关服务未启用。
ECHO.
ECHO 3.设置了磁盘分区的Antorun.inf。
ECHO.
ECHO 4.更改了shell32.dll中分区图标,或者shell32.dll文件损坏。
ECHO.
ECHO 5.缓存过旧导致的异常。
ECHO =====================================
::信息提示并作出选择
CHOICE /C YN /T 10 /D Y /M "您好,键入 Y 执行修复,N 退出,如未操作,默认十秒后自动执行修复。
::暂不使用此句 set /P IS=您好,键入 Y 执行修复,N 退出。(不区分大小写,输入错误将直接退出) 输入后回车
::判断输入的字符
IF ERRORLEVEL 2 (EXIT) ELSE (GOTO R)
::暂不使用此句 IF /I %IS% EQU Y (GOTO R) ELSE (EXIT)

::标签R
:R
ECHO.
ECHO /////////////////////////////////
ECHO //如遇到安全软件拦截请解除拦截。/
ECHO /////////////////////////////////

::首先执行备份至临时目录
ECHO.
ECHO ■■■■ 备份autorun.inf文件 ■■■■
ECHO ┌────────────┐
FOR %%i IN (
C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO IF EXIST "%%i:\\autorun.inf" (
COPY /Y %%i:\\autorun.inf %TEMP%\\%%iautorun.inf) ELSE (
ECHO 未备份 %%i:盘autorun.inf 文件)
ECHO └────────────┘
ECHO %TEMP%
ECHO ☆☆autorun.inf备份至临时目录☆☆

ECHO.
ECHO ■■■■ 删除autorun.inf文件 ■■■■
ECHO ┌────────────┐
FOR %%i IN (
C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO IF EXIST "%%i:\\autorun.inf" (
DEL /F /Q /A %%i:\\autorun.inf) ELSE (
ECHO %%i:盘未发现autorun.inf 文件)
ECHO └────────────┘
ECHO ☆☆autorun.inf文件删除完毕☆☆

ECHO.
ECHO ■■■■ 备份注册表 ■■■■
ECHO ┌────────────┐
REG EXPORT HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\DriveIcons %TEMP%\\HKLM.DriveIcons.reg /y
ECHO └────────────┘
ECHO ☆☆注册表备份完毕☆☆

ECHO.
ECHO ■■■■ 清理注册表 ■■■■
ECHO ┌────────────┐
REG DELETE "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\DriveIcons" /f
ECHO └────────────┘
ECHO ☆☆注册表清理完毕☆☆

ECHO.
ECHO ■■■■ 重启 ShellHWDetection 服务 ■■■■
ECHO ┌────────────┐
::NET START [service]
::NET STOP [service]
::sc config [service] start= demand //手动
::sc config [service] start= auto //自动
::sc config [service] start= disabled //禁用
::sc start [service]
::sc stop [service]
net start ShellHWDetection
sc config ShellHWDetection start= auto
sc start ShellHWDetection
ECHO └────────────┘
ECHO ☆☆ShellHWDetection 服务启动完毕☆☆

::判断图标缓存文件 IconCache.db 是否存在 ,是则删除文件
IF EXIST "%USERPROFILE%\\AppData\\Local\\IconCache.db" (DEL /F /Q /A "%USERPROFILE%\\AppData\\Local\\IconCache.db") ELSE (ECHO 未发现图标缓存文件)
IF EXIST "%USERPROFILE%\\LocalSettings\\Application Data\\IconCache.db" (DEL /F /Q /A "%USERPROFILE%\\LocalSettings\\Application Data\\IconCache.db") ELSE (ECHO 未发现图标缓存文件)
::重启 explorer 进程
TASKKILL /IM explorer.exe /F
start "" "explorer.exe"

ECHO.

ECHO ┌────────────┐
ECHO 如问题没有有效解决可尝试
ECHO 右键单击 “计算机” - “管理” - “磁盘管理”中更改磁盘的盘符来解决。
ECHO └────────────┘


ECHO.
::等待按键继续
ECHO .......................................................................
echo 操作完毕,如果提示成功并且还存在问题建议重启计算机后查看是否已经修复.
pause>nul
觉得文章有用?请我喝杯咖啡~