-
Notifications
You must be signed in to change notification settings - Fork 3
/
SFC_Filter.cmd
117 lines (91 loc) · 3.2 KB
/
SFC_Filter.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
@echo off
SetLocal EnableExtensions
cd /d "%~dp0"
echo.
echo ‘ªà¨¯â 䨫ìâà 樨 «®£ SFC
echo ®â Alex Dragokas
echo.
echo. v. 2.3
echo.
echo.
:: ”¨«ìâà æ¨ï «®£ SFC
:: ˆá¯®«ì§®¢ ¨¥ - ¯¥à¥âïãâì «®£ áªà¨¯â
:: ’ ª¦¥ «®£ ¬®¦¥â ¡ëâì à §¬¥é¥ à冷¬ á ¡ ⨪®¬ ¯®¤ ¨¬¥¥¬ *sfcdoc*.log ¨«¨ *cbs*.log
:: ‡ ¯ã᪠¡¥§ à£ã¬¥â - «¨§ «®£ ⥪ã饩 á¨á⥬ë
set curCBS=%SystemRoot%\Logs\CBS\CBS.log
rem ¥á«¨ § ¯ãé¥ á à£ã¬¥â®¬
if "%~1" neq "" (
rem …᫨ íâ® ¯ ¯ª :
if exist "%~1\" (
call :SeekOnFolder "%~1" true|| (
echo ‚ 㪠§ ®© ¯ ¯ª¥ «®£®¢ ¥ ©¤¥®!
echo.
echo ¡®â áªà¨¯â ¡ã¤¥â § ¢¥àè¥ .
pause >NUL
exit /B 1
)
rem …᫨ ä ©«:
) else (
set "CBS=%~1"
set "clearCBS=%~dpn1_Clear%~x1"
set "clearCBS_Rights=%~dpn1_Permissions%~x1"
)
rem ¥á«¨ § ¯ãé¥ ¡¥§ à£ã¬¥â , ¨é¥¬ «®£ à冷¬ á ¡ ⨪®¬
) else (
call :SeekOnFolder .|| (
rem …᫨ «®£ à冷¬ ¥ ©¤¥, ª®¯¨à㥬 CBS.log ¨§ á¨á⥬®© ¯ ¯ª¨ ¢ ¯ ¯ªã à冷¬ á ¡ ⨪®¬
call :GetPrivileges || exit /B
if not exist "%curCBS%" (
echo ‹®£ SFC ⥪ã饩 á¨á⥬¥ ¥ ᮧ¤ .
echo.
echo ¦¬¨â¥ ENTER, çâ®¡ë ¢ë¯®«¨âì ¯à®¢¥àªã 楫®áâ®á⨠á¨á⥬ëå ä ©«®¢.
pause >NUL
sfc /scannow
)
copy /y "%curCBS%" ".\_CBS_Dragokas.log" || (
echo ¥ 㤠¥âáï ᪮¯¨à®¢ âì «®£ SFC á «®ª «ì®© á¨á⥬ë!
echo.
echo ¡®â áªà¨¯â ¡ã¤¥â § ¢¥àè¥ .
pause >NUL
exit /B 1
)
set "CBS=%~dp0_CBS_Dragokas.log"
set "clearCBS=%~dp0_CBS_Clear.log"
set "clearCBS_Rights=%~dp0_CBS_Permissions.log"
)
)
:: ”¨«ìâà æ¨ï
< "%CBS%" findstr /i /C:"[SR]" /C:"Hashes for file member" /C:" Found:" | findstr /IV /C:"[SR] Verify complete" /C:"[SR] Verifying 100" /C:"[SR] Beginning Verify and Repair transaction" /C:"[SR] Verifying 1 components" > "%clearCBS%"
< "%CBS%" findstr /i /C:"[DIRSD OWNER WARNING]" /C:"ownership" | findstr /IV /C:"Ignoring duplicate ownership" > "%clearCBS_Rights%"
:: “¤ «ï¥¬ ¢à¥¬¥ë© ä ©«
if exist "%~dp0_CBS_Dragokas.log" del /f /a "%~dp0_CBS_Dragokas.log"
:: Žâªàëâì "ç¨áâë©" ®âç¥â ¯à®£à ¬¬®© ¯®-㬮«ç ¨î
rundll32 shell32.dll,ShellExec_RunDLL "%clearCBS%"
goto :eof
:GetPrivileges
net session >NUL 2>NUL || (
echo 㤥⠯®«ãç¥ «®£ ’…Š“™…‰ á¨á⥬ë.
echo.
echo ’ॡãîâáï ¯à¨¢¨«¥£¨¨ €¤¬¨¨áâà â®à .
echo.
echo ¦¬¨â¥ ENTER.
pause >NUL
mshta "vbscript:CreateObject("Shell.Application").ShellExecute("%~fs0", "", "", "runas", 1) & Close()"
exit /B 1
)
exit /B
:SeekOnFolder [FolderPath] [UseRecursivity]
if /i "%~2"=="true" (
for /f "delims=" %%a in ('2^>NUL dir /b /a-d /s "%~1\*sfcdoc*.log" "%~1\*cbs*.log"^|findstr /ivrc:".*_Clear.log$"') do set "CBS=%%a"& set "clearCBS=%%~dpna_Clear%%~xa"& set "CBS_name=%%~nxa"
) else (
for /f "delims=" %%a in ('2^>NUL dir /b /a-d "%~1\*sfcdoc*.log" "%~1\*cbs*.log"^|findstr /ivrc:".*_Clear.log$"') do set "CBS=%~dp0%%a"& set "clearCBS=%~dp0%%~na_Clear%%~xa"& set "CBS_name=%%a"
)
if defined CBS (
echo 㤥⠯஢¥¤¥ «¨§ «®£ [ "%CBS_name%" ] - %CBS%
echo.
echo ¦¬¨â¥ ENTER.
pause >NUL
) else (
exit /B 1
)
exit /B