유용한 배치파일

PE에서 드라이브 우클릭 메뉴에 숨겨진 파티션보기/감추기

집앞의 큰나무 2026. 2. 10. 09:05

  예전과 달리 최근 추세는  디스크를 여러개 장착하고 

멀티 윈도우로 구성하기도 하므로 파티션이 많을것입니다.

저장 장치가 많은 경우   ESP /Recovery 파티션만 하더라도 모두 마운트 해버리면

어떤것이  몇번 디스크와  짝꿍인지 이름을 바꿔 놓기전엔 헷갈릴때도 있을것 같습니다.

 

그래서 고안한 것이며 탐색기에서 해당 드라이브에 마우스 우클릭으로 선택하여

숨은 파티션 표시

숨은 파티션 감추기 토글 메뉴를 장착해 봤습니다.

 

이렇게 하면 전체 모두 다 마운트 되는 것이 아니고 해당 드라이브가 연결된 디스크에서

파티셔닝된 숨김 파티션만 마운트 되므로 짝꿍을 보기 편하고

언마운트 후 또 다른 드라이브 연결 디스크를 마운트 언마운트  해볼 수가 있게됩니다.

이것도 뭐 마냥 클릭하다보면 엉킬것이므로 두가지의 경우만 테스트 해본것이고요

 

테스트를 위해  ESP=300mb   MSR=16mb    Recovert 1000mb  나머지 주파티션으로  파티션 작업하여 실습해본 그림입니다.

MSR은 표시 안되더군요 

 

---이하  그림--

 

 

 

 

 

 

 

 

 

 

-------------------사용된 배치 파일-------------------------------

어떤 경로에서든  배치파일을  두고   실행하면  우클릭 메뉴가 만들어집니다. 

테스트 후 잘 되면  PE.wim파일을 마운트하고 같은 경로에  파일을 두고  레지스트리  하이브로드 언로드하여  만들면 됩니다.

@echo off
setlocal enabledelayedexpansion
title 파티션 토글 도구 (V2 - 안정성 강화)
mode 55,12

:: 1. 메뉴 등록
if "%~1"=="-reg" (
    echo.
    reg add "HKEY_CLASSES_ROOT\Drive\shell\U-PartitionToggle" /ve /d "숨겨진 파티션 표시/숨기기" /f >nul
    reg add "HKEY_CLASSES_ROOT\Drive\shell\U-PartitionToggle\command" /ve /d "cmd.exe /c \"\"%~f0\" \"%%1\"\"" /f >nul
    reg add "HKEY_CLASSES_ROOT\Drive\shell\U-PartitionToggle" /v "icon" /t REG_SZ /d "imageres.dll,-8" /f >nul
    echo.
    echo ◈ 우클릭 메뉴 등록 완료!
    timeout /t 2 > nul & exit
)

:: 2. 메뉴 삭제
if "%~1"=="-del" (
    echo. 
    reg delete "HKEY_CLASSES_ROOT\Drive\shell\U-PartitionToggle" /f > nul 2>&1
    echo.
    echo ◈ 우클릭 메뉴 삭제 완료!
    timeout /t 2 > nul & exit
)

:: 3. 메인 메뉴
if "%~1"=="" (
    echo.
    echo    [ 파티션 표시/숨기기 도구 - 안전 모드 ]
    echo.
    echo    1. 우클릭 메뉴 등록
    echo    2. 우클릭 메뉴 삭제
    echo.
    set /p "opt=> 선택: "
    if "!opt!"=="1" "%~f0" -reg
    if "!opt!"=="2" "%~f0" -del
    exit
)

:: 4. 실행부
set "target=%~1"
set "target=%target:~0,1%"
if "%target%"=="" exit

set "wDir=%temp%\pToggle"
if not exist "%wDir%" mkdir "%wDir%"

:: 디스크 번호 추출
echo sel vol %target% > "%wDir%\getD.txt"
echo detail vol >> "%wDir%\getD.txt"
set "dNum="
for /f "tokens=2,3" %%a in ('diskpart /s "%wDir%\getD.txt" ^| findstr /i "Disk 디스크"') do (
    for %%z in (%%a %%b) do (
        echo %%z| findstr /r "^[0-9]*$" >nul && set "dNum=%%z"
    )
)

if "%dNum%"=="" (echo 디스크 번호 인식 실패 & pause & exit)

set "RP=%wDir%\RemDisk%dNum%.txt"

:: --- [토글 로직] ---
if exist "%RP%" (
    echo.
    echo ◈ 디스크 %dNum%의 임시 마운트 해제 중...
    echo.
    diskpart /s "%RP%" > nul 2>&1
    del "%RP%"
    echo ◈ 해당 디스크의 파티션 숨김 완료.
) else (
    echo.
    echo ◈ 디스크 %dNum% 내의 숨겨진 파티션 검색 중...
    echo.
    echo sel disk %dNum% > "%wDir%\detD.txt"
    echo detail disk >> "%wDir%\detD.txt"
    diskpart /s "%wDir%\detD.txt" > "%wDir%\vList.txt"

    set "cnt=0"
    for /f "tokens=2" %%v in ('findstr /i "Volume 볼륨" "%wDir%\vList.txt"') do (
        set "vN=%%v"
        echo !vN!| findstr /r "^[0-9]*$" >nul && (
            echo sel vol !vN! > "%wDir%\chk.txt"
            echo detail vol >> "%wDir%\chk.txt"
            
            set "isSafe=Y"
            set "hasLtr=N"
            
            for /f "tokens=*" %%l in ('diskpart /s "%wDir%\chk.txt"') do (
                set "line=%%l"
                :: 드라이브 문자 확인 (Ltr 또는 문자가 적힌 줄에 공백이 아닌 문자가 있는지)
                echo !line! | findstr /r /c:"Ltr [A-Z]" /c:"문자 [A-Z]" >nul && set "hasLtr=Y"
                
                :: [핵심 수정] EFI 및 시스템 파티션 차단 키워드 강화
                echo !line! | findstr /i "System 시스템 Reserved 예약 Recovery 복구 Hidden 숨김 EFI OEM" >nul && set "isSafe=N" 
            )

            :: 문자가 없고(hasLtr=N), 시스템 파티션이 아닌(isSafe=Y) 경우만 마운트
            if "!hasLtr!"=="N" (
                if "!isSafe!"=="Y" (
                    echo    - [Disk %dNum%] 볼륨 !vN! 마운트 시도...
                    echo sel vol !vN! > "%wDir%\mnt.txt"
                    echo assign >> "%wDir%\mnt.txt"
                    diskpart /s "%wDir%\mnt.txt" > nul
                    
                    echo sel vol !vN! >> "%RP%"
                    echo remove noerr >> "%RP%"
                    set /a cnt+=1
                )
            )
        )
    )
    if !cnt! equ 0 (echo ◈ 표시할 안전한 숨겨진 파티션이 없습니다.) else (echo ◈ !cnt!개의 파티션 표시 완료.)
)
echo.
echo ◈ 탐색기를 다시 열어서 확인하세요
timeout /t 3 >nul
exit

'유용한 배치파일' 카테고리의 다른 글

NTFS 권한 설정  (0) 2026.01.17
드라이브 정보  (0) 2025.09.23
디스크 정보  (0) 2025.09.23
CPU- 과부하 테스트  (0) 2025.09.06
PE에서 Edge 끌어 오기  (1) 2025.08.28