[윈도우즈] 파일확장자와 프로그램을 연결하는 스크립트

@ECHO OFF
REM #########################################################################
REM #
REM # 레지스트리를 통해 확장자와 프로그램을 연결한다.
REM #
REM #########################################################################
REM # UTF-8로 코드페이지 변경
REM #########################################################################
CHCP 65001
CLS

ECHO #########################################################################
ECHO # 시작
ECHO #########################################################################
CALL :FUNC_DEL_MUSICPLAYER_EXT
CALL :FUNC_SET_MUSICPLAYER_EXT

CALL :FUNC_DEL_DOCUMENT_EXT
CALL :FUNC_SET_DOCUMENT_EXT

REM CALL :FUNC_DEL_PICTURE_EXT
REM CALL :FUNC_SET_PICTURE_EXT
PAUSE
EXIT /B %ERRORLEVEL%

:FUNC_SET_MUSICPLAYER_EXT
    ECHO #########################################################################
    ECHO # 음악플레이어 확장자를 등록한다.
    ECHO #########################################################################
    CALL :FUNC_ADD_EXT_HKCR aac     foobar2000 "C:\PortableApps\foobar2000\foobar2000.exe"
    CALL :FUNC_ADD_EXT_HKCR aiff    foobar2000 "C:\PortableApps\foobar2000\foobar2000.exe"
    CALL :FUNC_ADD_EXT_HKCR flac    foobar2000 "C:\PortableApps\foobar2000\foobar2000.exe"
    CALL :FUNC_ADD_EXT_HKCR mp3     foobar2000 "C:\PortableApps\foobar2000\foobar2000.exe"
    CALL :FUNC_ADD_EXT_HKCR ogg     foobar2000 "C:\PortableApps\foobar2000\foobar2000.exe"
    CALL :FUNC_ADD_EXT_HKCR pcm     foobar2000 "C:\PortableApps\foobar2000\foobar2000.exe"
    CALL :FUNC_ADD_EXT_HKCR wav     foobar2000 "C:\PortableApps\foobar2000\foobar2000.exe"
    CALL :FUNC_ADD_EXT_HKCR wma     foobar2000 "C:\PortableApps\foobar2000\foobar2000.exe"
EXIT /B /0

:FUNC_SET_PICTURE_EXT
    ECHO #########################################################################
    ECHO # 그림 및 사진 확장자를 등록한다.
    ECHO #########################################################################
    CALL :FUNC_ADD_EXT_HKCR arw     fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
    CALL :FUNC_ADD_EXT_HKCR bmp     fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
    CALL :FUNC_ADD_EXT_HKCR cr2     fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
    CALL :FUNC_ADD_EXT_HKCR crw     fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
    CALL :FUNC_ADD_EXT_HKCR dng     fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
    CALL :FUNC_ADD_EXT_HKCR gif     fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
    CALL :FUNC_ADD_EXT_HKCR jpe     fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
    CALL :FUNC_ADD_EXT_HKCR jpeg    fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
    CALL :FUNC_ADD_EXT_HKCR jpg     fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
    CALL :FUNC_ADD_EXT_HKCR mrw     fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
    CALL :FUNC_ADD_EXT_HKCR nef     fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
    CALL :FUNC_ADD_EXT_HKCR orf     fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
    CALL :FUNC_ADD_EXT_HKCR pef     fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
    CALL :FUNC_ADD_EXT_HKCR png     fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
    CALL :FUNC_ADD_EXT_HKCR psd     fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
    CALL :FUNC_ADD_EXT_HKCR raf     fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
    CALL :FUNC_ADD_EXT_HKCR rw2     fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
    CALL :FUNC_ADD_EXT_HKCR srf     fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
    CALL :FUNC_ADD_EXT_HKCR tga     fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
    CALL :FUNC_ADD_EXT_HKCR tif     fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
    CALL :FUNC_ADD_EXT_HKCR tiff    fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
    CALL :FUNC_ADD_EXT_HKCR wmf     fsviewer "C:\PortableApps\FastStoneImageViewer_Portable\FSViewer.exe"
EXIT /B /0

:FUNC_SET_DOCUMENT_EXT
    ECHO #########################################################################
    ECHO # 문서 확장자를 등록한다.
    ECHO #########################################################################
    CALL :FUNC_ADD_EXT_HKCR txt     editplus "C:\PortableApps\EditPlus_Portable\editplus.exe"
EXIT /B /0

:FUNC_DEL_MUSICPLAYER_EXT
    ECHO #########################################################################
    ECHO # 음악플레이어 확장자 등록을 삭제한다.
    ECHO #########################################################################
    CALL :FUNC_DELETE_EXT_HKCR aac  foobar2000
    CALL :FUNC_DELETE_EXT_HKCR aiff foobar2000
    CALL :FUNC_DELETE_EXT_HKCR flac foobar2000
    CALL :FUNC_DELETE_EXT_HKCR mp3  foobar2000
    CALL :FUNC_DELETE_EXT_HKCR ogg  foobar2000
    CALL :FUNC_DELETE_EXT_HKCR pcm  foobar2000
    CALL :FUNC_DELETE_EXT_HKCR wav  foobar2000
    CALL :FUNC_DELETE_EXT_HKCR wma  foobar2000
EXIT /B /0

:FUNC_DEL_PICTURE_EXT
    ECHO #########################################################################
    ECHO # 그림 및 사진 확장자 등록을 삭제한다.
    ECHO #########################################################################
    CALL :FUNC_DELETE_EXT_HKCR arw     fsviewer
    CALL :FUNC_DELETE_EXT_HKCR bmp     fsviewer
    CALL :FUNC_DELETE_EXT_HKCR cr2     fsviewer
    CALL :FUNC_DELETE_EXT_HKCR crw     fsviewer
    CALL :FUNC_DELETE_EXT_HKCR dng     fsviewer
    CALL :FUNC_DELETE_EXT_HKCR gif     fsviewer
    CALL :FUNC_DELETE_EXT_HKCR jpe     fsviewer
    CALL :FUNC_DELETE_EXT_HKCR jpeg    fsviewer
    CALL :FUNC_DELETE_EXT_HKCR jpg     fsviewer
    CALL :FUNC_DELETE_EXT_HKCR mrw     fsviewer
    CALL :FUNC_DELETE_EXT_HKCR nef     fsviewer
    CALL :FUNC_DELETE_EXT_HKCR orf     fsviewer
    CALL :FUNC_DELETE_EXT_HKCR pef     fsviewer
    CALL :FUNC_DELETE_EXT_HKCR png     fsviewer
    CALL :FUNC_DELETE_EXT_HKCR psd     fsviewer
    CALL :FUNC_DELETE_EXT_HKCR raf     fsviewer
    CALL :FUNC_DELETE_EXT_HKCR rw2     fsviewer
    CALL :FUNC_DELETE_EXT_HKCR srf     fsviewer
    CALL :FUNC_DELETE_EXT_HKCR tga     fsviewer
    CALL :FUNC_DELETE_EXT_HKCR tif     fsviewer
    CALL :FUNC_DELETE_EXT_HKCR tiff    fsviewer
    CALL :FUNC_DELETE_EXT_HKCR wmf     fsviewer
EXIT /B /0

:FUNC_DEL_DOCUMENT_EXT
    ECHO #########################################################################
    ECHO # 문서 확장자 등록을 삭제한다.
    ECHO #########################################################################
    CALL :FUNC_DELETE_EXT_HKCR txt  editplus
EXIT /B /0

REM #########################################################################
REM # HKEY_CLASSES_ROOT에 확장자 레지스트리 등록
REM # ex) CALL :FUNC_ADD_EXT_HKCR txt notepad "C:\Windows\System32\notepad.exe"
REM #########################################################################
:FUNC_ADD_EXT_HKCR
    REM #########################################################################
    REM # HKEY_CLASSES_ROOT에 확장자 등록
    REM #########################################################################
    REG ADD "HKCR\.%1" /T REG_SZ /D "%2.%1" /F
    REM 레지스트리 백업
    REM REG EXPORT "HKCR\.%1" "backup_%1.reg" /Y

    REM HKEY_CLASSES_ROOT에 애플리케이션 등록
    REG ADD "HKCR\%2.%1\DefaultIcon" /T REG_SZ /D "%3" /F
    REG ADD "HKCR\%2.%1\shell\open\command" /T REG_SZ /D "%3 ""%%1""" /F
EXIT /B /0

REM #########################################################################
REM # 확장자 레지스트리 삭제 (HKEY_CLASSES_ROOT)
REM # ex) CALL :FUNC_DELETE_EXT_HKCU txt notepad
REM #########################################################################
:FUNC_DELETE_EXT_HKCR
    REG DELETE "HKCR\.%1" /F
    REG DELETE "HKCR\%2.%1" /F
EXIT /B /0

REM #########################################################################
REM # HKEY_CURRENT_USER에 확장자 레지스트리 등록
REM # ex) CALL :FUNC_ADD_EXT_HKCU txt notepad "C:\Windows\System32\notepad.exe"
REM #########################################################################
:FUNC_ADD_EXT_HKCU
    REM #########################################################################
    REM # HKEY_CLASSES_ROOT에 확장자 등록
    REM #########################################################################
    REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%1" /F
    REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%1\OpenWithList" /F
    REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%1\OpenWithProgids" /F
    REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%1\UserChoice" /F
    REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%1\OpenWithList" /V "a" /T REG_SZ /D "%2.EXE" /F
    REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%1\OpenWithList" /V "MRUList" /T REG_SZ /D "a" /F
    CALL :FUNC_ADD_REG_NONE %1 %1file
    REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%1\UserChoice" /V "ProgId" /T REG_SZ /D "%2.%%1" /F
    REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\ApplicationAssociationToasts" /V "Applications\%2.exe_.%1" /T REG_DWORD /D 0 /F
EXIT /B /0

REM #########################################################################
REM # 확장자 레지스트리 삭제 (HKEY_CURRENT_USER)
REM # ex) CALL :FUNC_DELETE_EXT_HKCU txt notepad
REM #########################################################################
:FUNC_DELETE_EXT_HKCU
    REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%1" /F
    REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\ApplicationAssociationToasts" /V "Applications\%2.exe_.%1" /F
EXIT /B /0

REM #########################################################################
REM # REG_NONE 타입 레지스트리 등록
REM # ex) CALL :FUNC_ADD_REG_NONE txt txtfile
REM #########################################################################
:FUNC_ADD_REG_NONE
    ECHO Windows Registry Editor Version 5.00 > __tmp__.reg
    ECHO [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%1\OpenWithProgids] >> __tmp__.reg
    ECHO "%2"=hex(0): >> __tmp__.reg
    REG IMPORT __tmp__.reg
    DEL /Q __tmp__.reg
EXIT /B /0
위로 스크롤