* Replacer 2.63 사전 릴리스
* www3.telus.net/_/replacer/
*电子邮件:undefined@telus.net
@에코 종료
Title Replacer
*운영체제 확인 p>
ver | find "NT" >nul & amp& amp (
echo/! Windows NT는 지원되지 않습니다.
pause & gt null
이동 :eof
)
설정 로컬 비활성화 지연 확장 활성화 확장
*기존 구성 요소 사용
"%. ~dp0Components\*. exe "(
set " 경로 = % ~ dp0Components%path%"
Title Replacer*
)else(
set " 경로 = % windir % \ system32%path%"
))
)
*임시 디렉터리
set "dir = %~dp0. 프로그램 대체"
*읽기 전용 미디어에 %tmp% 사용
"% dir %"MD"% dir %가 없는 경우 "2 & gt; nul ||(
set "dir=%tmp%\. Replacer"
md "%tmp%\"ReplacerTemp " 2 & gt null
)
*다른 스크립트와 통신하는 데 사용되는 플래그
Set flg="%dir%\... \.Flag_SafeToDel"
set fl2="%dir%\.Flag2_SafeToDel"
*추출된 파일
set VBS = " % dir % \ Clear _ WFP _ message . VBS"
*재작성된 스크립트 저장
set "scr=% dir %. 현재 스크립트"
*시스템 부팅에 실패할 경우를 대비하여 실행 취소 명령 저장
set und = " % windir % \ replace rundo . txt"
*삭제된 파일 저장
set del = " % dir % \ 삭제된 파일 _ SafeToDel"
Call:브레이크 청소
하단에 추가 VBScript 내장
findstr/rc:"^[]" " % ~ dpnx 0. " & gt; % vbs % 2 & gtnul ||(
echo/! 임베디드 파일을 추출할 수 없습니다. 다음에서 제공되는 컴포넌트 패키지를 사용해 보세요:
echo/ %sys%
)
)
(%sys%)에 %%*에 대한 pth(
for %%*가 정의되어 있으면 do(
set sys = " % PTH % % ~ NX *"
)
)
)
call:chk %sys% ||(
echo/계속하려면 아무 키나 누르세요.
일시 중지 & gt null
Go to:system
)
*스크립트가 시스템 파일로 제공되었는지 확인
For %%* in (%sys%), do(
if /i "%%~x*"== ". txt" (
Find/I";; ReplacerScript " % % * & gtnul & amp& amp (
call:scr %%%*
)
)
call:ver %sys% || goto:sys
:mod하여 대체 파일을 가져옵니다
cls p>
"mod="
대체 파일인 %nam%를 이 창으로 끌어다 놓습니다.
%bak% 가 있는 경우(
echo/ 또는, RESTORE를 입력하여 %nam% 백업을 복원합니다.
)
그런 다음 Enter 키를 눌러 계속합니다.
echo/ 또는 Q를 입력하여 종료합니다.
call:get mod || goto:mod
call:quo mod
if /i %mod%=="Q" call:brk Now
if /i %mod%=="RESTORE"(call:rst || goto:mod)
call. chk %모드% ||(
echo/계속하려면 아무 키나 누르세요.
일시정지 & gt 비우기
가 :모드로 이동
)
if /i %mod%==%sys%(
echo/! 파일은 스스로 바꿀 수 없습니다.
echo/
echo/ 계속하려면 아무 키나 누르세요.
pause& gt empty
)& amp& amp go to :mode
:cnf 확인 작업
cls
if %mod%==%bak%(
다시 echo/file을 재개합니다.
)else(
%bak%(
이 에코/파일을 백업하지 않으면, 백업이 이미 존재합니다.
)else(
(%sys%)의 %%*에 대해, do(
echo/File은 다음 위치에 백업합니다:
echo/"%%~dpn*. 백업"
)
)
)
echo/
echo/현재 파일:
echo/%sys%
echo/로 대체됩니다:
echo/%mod%
echo/
echo/
echo/continue? ^(Y/N^)
call :get cnf || goto:cnf
call :quo cnf
I가 " %cnf:~1, 1%" == "Y"가 아닌 경우 call :brk Now
cls
:vbs to start VBScript
* A 플래그는 VBScript가 종료할 때를 알려주므로 Replacer.cmd가 종료된 후에도 WFP 메시지는
*지워집니다
현재 %flg% del %flg%
"%atr%"=="non "(
start ""/정상 이하인 경우 wscript//b % VBS % % flg % | |(
echo/VBScript failed:
echo/%vbs%
echo/
)
)
"%scr%"가 있는 경우 "exit /b
:rep replace file
%und% del/f %und%가있는 경우
"%scr%"가 없는 경우 (
echo/ * %nam%:
)
)
)< /p>
* 대체 파일로 시스템 파일을 덮어씁니다
if /i not %mod%==%bak%(
%bak%가 존재하지 않으면 (
echo/ -backup...
call:cpy %sys% %bak%
)
)
*모든 파일이 보호되지 않음
"%atr%"=="non"(
If %dll% exists(
echo/ -Copy to DllCache...
call:cpy %mod% %dll%
)
If %spf% exists(
echo/ -copy to ServicePackFiles...
call:cpy %mod% %spf%
)
%c86% 존재하면 (
echo/ - i386 폴더로 압축...
call:cpy %mod% %fil%
call:cab %fil% %c86%
)
%w86% 존재하면 (
echo/ - Windows i386 폴더로 압축...
call:cpy %모드% %필%
call:cab %필% %w86%
)
%d86%가 있으면 (
echo/ - 드라이버 캐시에 복사...
call:cpy %mod% %d86%
)
)
if /i %mod%==%bak%(
echo/ -복원 시스템 파일...
)else(
echo/ -시스템 파일 바꾸기...
)
* 단순히 파일 이름을 바꾸는 것만으로 WFP를 우회합니다;
::"%~1"
" %pth%\%~nx1"이 존재하지 않으면 (
echo/! 시스템 파일을 찾을 수 없음:
echo/ "%~1"
echo/
export/b1
)
if /i not "%mod%"=="복원"(
If "%mod%"(
If "%mod%. "(
echo/! 대체 파일을 찾을 수 없음:
echo/ "%mod%"
echo/
export/b1
)
)
"% num %" = = " "(
find/I ":\ % \. ~ n 1% num % " " % ~ F0 " & gt; nul 2 & gt& amp1 || (
echo/! 잘못된 참조 번호:
echo/ "%~nx1, %num%"
echo/
exit/b1
)
)
exit/b0
:옵 처리 스크립트의 옵션 줄(sys)
if /i "%opt%"== "옵션 옵션"(
Echo:? 옵션 파일 "%~1"? ^(Y/N^)
setlocal enabledelayedexpansion
call:getvar
if/i "!var!" == "Y" (
endlocal
call. fmt " %시스템%, %수정된%, %수량%, %최적화된%"
Exit/b
)else(
로컬 종료
)
)else(
Call:fmt " %시스템%, %수정된%, %수량%, %최적화된%"
Exit/b1
)
Exit/b0
:fmt 형식의 스크립트
*토큰이 누락된 경우 입력
set "var=%~1"
set "var=%var:, =, %"
set "var=%var:, =, %"
set "var=%var:, =, %"
& gt& gt" %scr%-tmp "echo /%var%
exit /b0
:시퀀스 실행 시퀀스 (정렬된 토큰 4개)
*스크립트에서 파일을 바꿀 때 사용
set "pth="
if not "% ~ 3" = = " "(
콜:\\%~n1%~3
)else(
콜:scn %1
)
Set " sys=%pth%%~nx1"
if /i "%~2" == "복원"(
set "mod=%pth%%~n1.backup"
)else(
set "mod=%~f2"
)
)
CALL:QUO SYS
CALL:QUO MOD
CALL:CHK %SYS% || EXIT/B
CALL:CHK %MOD% || EXIT/B
CALL:VERSION %SYS% || EXIT/B
CALL:ON behalf OF
:scn 폴더를 검사
*파일 이름만 주어졌을 때 가장 일치 가능성이 높은 것을 찾습니다
::(스크립트 또는 시스템 파일 입력 중)
"pth=%~1"
이 아니면 " %pth:\=%"=. = "%pth%"(
Set "pth=%~dp1"
)else(
Set "pth="
Caller:\ \ \ % ~ n 10 2 & gt; nul & amp& amp exit/b0
*더 높은 수준의 더 일반적인 경로
For %%* in(
" %windir% "
" %windir%\system32 "
" %windir%\system32\drivers "
" %. windir%\system "
" %programfiles%\Outlook Express "
" %프로그램 파일 % \ Windows Media Player "
" %windir%\Resources\Themes\ Luna "
" %programfiles%\Movie Maker "
" %programfiles%\Windows NT "
" % windir % \ PCHEALTH \ 도움말 CTR \ 바이너리 "
" % windir%\Fonts "
" % 프로그램 파일 % \ Internet Explorer "
" % 프로그램 파일 % \ Internet Explorer \ 연결 마법사 "
" % 일반 프로그램 파일 % \ \ Microsoft 공유 \ MSInfo "
" % 프로그램 파일 % \ Windows NT \ 액세서리 "
" % 프로그램 파일 % \ Windows NT \ 핀볼 "
" % commonprogramfiles%\System "
" %windir%\system32\Restore "
" % windir % \ system32 \ srchasst "
" %windir%\system32\usmt "
>
" % 일반 프로그램 파일 % \ Microsoft 공유 \ 음성 "
" %프로그램프로필%\넷미팅 "
" % 일반 프로그램 파일 % \ 시스템 \ 맵피 \ 1033 "<
" % 일반 프로그램 파일 % \ Adobe \ Calibration "
" % 프로그램 파일 % \ Symantec \ 라이브 업데이트 "
" % 프로그램 파일 % \ 야생 탄젠트 \ Apps \. CDA "
" % 프로그램 파일 % \ 스타 도크 \ 개체 데스크톱 \ 아이콘 패키저 "
)do(
If not %fl2%(
If present" %%~*\%~nx1 "(
설정 " pth=...=...=...=...)
)
"
"
Set " pth=...=...=...= %%~*\"
nul type & gt%fl2%
)
)
)
If present %%fl2% del %fl2%
)
Exit/b0
:brk 종료 교체 절차 ([clear][immediate])
* 지우고 종료
"%~1" == "퍼지" (
"%~1" == "지금" (
echo
echo/종료하려면 아무 키나 누르세요.
pause & gt null
)
)
if /i not "%~1"=="Purge" if present " %scr%" popd
For %% in (%vbs% %fil% %flg% %%*
% fl2 % " % SCR % " % del" % " %. SCR %-tmp " % DLP %
)do if exist % % * del/f % % * & gt; nul 2 & gt& amp1
if /i not "%~1" == "퍼지" (
If exist "% dir %" rd "% dir %"2 & gt; null
로컬 종료
*다른 루프가 계속되지 않도록 하드 종료 사용
Exit
Exit/b0
*더 많거나 적은 단계가 필요한 특수 파일 목록< /p>
:\ \ Luna
Set "fln=luna.mst"
Set "atr=wfp"
Exit/b0
:\\\\ 셸 스타일
if/나는 " % PTH:홈스테드 = % " = " % PTH % "(
set "fln=home_ss.dll"
)
if/나는 " % PTH. 메탈릭 = % " = " % PTH % "(
Set "fln=metal_ss.dll"
)
if/I not " % PTH:일반 색상 = % " = " % PTH % "(
) Set "fln=blue_ss.dll"
)
if/I not " % PTH:\ system32 \ = = % " = = " % PTH % "(
Set " fln=class_ss.dll"
)< /p>
Set "atr=wfp"
Exit/b0
:\\\ Marlett
Set "atr=non"
Exit/b
:\\\Comctl32
if/I not " % PTH % " = " % windir % \ system32 \ "(
set "atr=non"
)
exit/b
:\\\\ Commdlg
if/I not " % PTH % " = " % windir % \ system \ "(
Set "atr=non"
)
Exit/b
:\ \ \ \ \ \ 메모장
:\ \ \ \ \ 메모장
if/I not " % PTH % " = " % windir % \ "(
"atr=non"
설정)
Exit/b
:\\Uxtheme.dll
Set "atr=wfp"
:\\ Comctl320
Set "pth=%windir%\system32"
Exit/b
:\\\\ Comctl321
설정 " PTH = % windir % \ WinSxS \ x86 _ Microsoft. Common-Controls _ 6595 b 64144 CCF 1df _ 6 . 0 . 0 . 0 _ x-ww _ 1382 d70a \"
Exit/b
:\\\ Comctl322
set " PTH = % windir % \ WinSxS \ x86 _ Microsoft. windows . Common-Controls _ 6595 b 64144 CCF 1df _ 6 . 0 . 10.0 _ x-ww _ f7fb 5805 \"
Exit/b
:\\\ Comctl323
set " PTH = % windir % \ WinSxS \ x86 _ Microsoft. windows . Common-Controls _ 6595 b 64144 CCF 1df _ 6 . 0 . 2600 . 1331 _ x-ww _ 7 abf 6d 02 \"
Exit/b
:\\\ Comctl324
set " PTH = % windir % \ WinSxS \ x86 _ Microsoft. windows . Common-Controls _ 6595 b 64144 CCF 1df _ 6 . 0 . 2600 . 1515 _ x-ww _ 7 bb 98 b 8 a \"
Exit/b
:\\\ Comctl325
set " PTH = % windir % \ WinSxS \ x86 _ Microsoft. windows . Common-Controls _ 6595 b 64144 CCF 1df _ 6 . 0 . 2600 . 2180 _ x-ww _ a84f 1ff 9 \ "
Exit/b
:\\\\ Commdlg0
Set "pth=%windir%\system"
Exit/b
:\\\ "
Exit/b
:\\\ Notepad1
Set "pth=%windir%\system32"
Exit/b
:\\\Shellstyle0
Set "pth=% windir%\system32"
Exit/b
:\\\\ Shellstyle1
Set "PTH = % windir % \. 리소스 \ 테마 \ 루나 \ 셸 \ 일반 색상"
Exit/b
:\\\\ Shellstyle2
설정 " PTH = " % windir % \ 리소스 \ 테마 \ 루나. \ 셸 \ 메탈릭 \"
Exit/b
:\\\ Shellstyle3
set " PTH = % windir % \ 리소스 \ 테마 \ 루나 \ 셸 \ 홈스테드 "
Exit/b
*스크립트 줄 형식 목록
:\RNO
설정 "mod=복원"
설정 "number=%~2 "
Set "opt=%~3"
Exit/b
:\R-O
Set "mod=Restore"
Set "quantity="
Set "opt=%~2"
Exit/b
:\RN-
Set "mod=Restore "
Set "quantity=%~2"
Set "opt="
Exit/b
:\R -
설정 "mod=복원"
Set "quantity="
Set "opt="
Exit/b
< p>:\-N-Set "mod=%sys%"
Set " num=%~1"
Set "opt="
Exit/b
:\-No
Set "mod=%sys%"
Set " num=%~1"
Set "opt=%~2"
Exit/b
:\ - O
Set "mod=%sys%"
Set "quantity="
Set "opt=%~1"
Exit/b
:\M -
Set "" mod=%~1"
Set "quantity="
Set "opt="
Exit/b
:\MN-
Set " mod=%~1"
Set "quantity=%~2"
Set "opt="
Exit/b
:\M-O
Set "mod=%~1"
Set "Quantity="
Set "opt=%~2"
Exit/b
:\MNO
Set "mod=%~1"
Set "수량=%~2"
set "opt=%~3"
Exit/b
:\ -
set "mod=%sys% "
설정 "수량="
설정 "opt="
종료/b
* Clear _ WFP _ 메시지 . VBS- WFP 메시지 지우기
WFP 메시지 지우기
const win="Windows 파일 보호"
const wi2="구성 요소를 찾을 수 없습니다"
set arg=wscript.arguments
If arg.count then < /p>
flg = 인수 item(0)
else wscript.echo "오류 인수"
wscript.quit
If ... it ends
set w = . wscript . createobject(" wscript . shell ")
set f = wscript . createobject(" 스크립팅 . 파일 시스템 개체 ")
x = 999
그리고 x & gt0
If w.appactivate(win) then
w . sendkeys"{ ESC }"
w . sendkeys"{ TAB } { ENTER }"
If ... it ends
If w.appactivate(wi2) then
w . sendkeys "{ ESC } { TAB } { ENTER }"
이러한 경우 종료됩니다...
If . 파일이 존재한다면(flg ),then
x=45
f . 파일 삭제 (flg)
파일이 있으면 ... 종료
wscript.sleep 333
x=x-1
줄