제목 : 디스크 선택 실수 방지
히이이잌요즘 관련 게시글이 자주 보여서 수정해보았습니다.
참고용으로 사용해보세요.
19H2_2XXXP PE에서만 정상 동작합니다.
_PE_CONFIG.ini를 _PE_CONFIG폴더에,
DP.cmd를 Program Files\DP 폴더에 넣으세요.
_PE_CONFIG의 하단에 관련 설정을 추가했습니다.
대소문자는 구별하지 않습니다.
두 조건중 하나라도 일치하는 경우 경고창과 함께 이전으로 돌아갑니다.
이 밑으로는 명령 원리이니 관심있으신분만 읽어보세요.
특정 볼륨을 포함하였을 때...
Bootice를 활용, BOOTICE.exe /diskinfo /find /file=%temp%\Bootice_diskinfo.cmd 명령으로 배치파일을 생성한 뒤
call "%temp%\Bootice_diskinfo.cmd" 명령으로 불러옵니다.
위에서 저장한 변수를 for명령을 통해 뽑아냅니다.
배치파일에서 //는 주석기호로 사용할 수 없습니다. 그대로 복사하지 말고 참고만 하세요.
for %%i in (!DRIVE%%BLETTER!) do (
for /f "tokens=1,* delims=:" %%y in ('vol %%i') do (
set drvletExCol=%%i // 편의상 드라이브 문자 변수에서 콜론(:)을 빼는 명령이라 필수는 아닙니다.
set drvletExCol=!drvletExCol:^:=!
IF "%%y" EQU " !drvletExCol! 드라이브의 볼륨" set "VolName=!VolName! %%i%%z" // 하나의 변수에 모읍니다
)
echo !VolName!|find /i "%보호할 볼륨 이름%"&&[있을 경우 실행할 명령]
특정 경로를 포함하였을 때...
for %%i in (!DRIVE%%BLETTER!) do IF EXIST "%%i\%검색할 경로%" [있을 경우 수행할 명령]
댓글 [16]
미니75
- 2022.02.03
- 23:36:24
항상 유용한 자료 배풀어 주심에 감사드립니다. 히이이잌님!!
예전에 윈도우 설치단계 줄이기 소스 실무에서 잘활용하고 있습니다.
해당 스크립트에 위에 알려주신 부분 적용하고 싶은데 봐도봐도 응용이 안되네요 ㅜㅜ
선택한 디스크에 AAA 라는 폴더가 있으면(실수로 디스크를 잘못선택한경우) 빠져나가게 하고 싶은 경우입니다.
아래처럼 적용해 보았는데 GOTO 건너뛰기가 안되고 순서대로 처리되네요ㅜ
TEMP 폴더에 Bootice_diskinfo.cmd 생성 까지는 확인했습니다.
@echo off
pushd %~dp0
title Windows 설치 (MBR)
color 07
mode con cols=100 lines=30
Rd "%WinDir%\system32\test_permissions" >NUL 2>NUL
Md "%WinDir%\System32\test_permissions" 2>NUL||(Echo 관리자 권한으로 실행해주세요!&&Pause >nul&&Exit)
Rd "%WinDir%\System32\test_permissions" 2>NUL
SETLOCAL ENABLEDELAYEDEXPANSION
:ST
color 07
taskkill /IM mmc.exe
taskkill /IM notepad.exe
cls
echo.
echo.
BOOTICE.exe /diskinfo /find /file=%temp%\Bootice_diskinfo.cmd
start diskmgmt.msc
echo.
echo 윈도우를 설치할 디스크를 선택하세요
echo 디스크 관리자에서 표시되는 번호를 적으면 됩니다.
set /p disk=(디스크 번호 입력) :
for %%i in (!DRIVE%%BLETTER!) do IF EXIST "%%i\AAA" goto QUIT
echo 파티션작업을 진행합니다.
pause
:QUIT
echo 해당경로에 사용자 지정 폴더 있어서 취소합니다.
pause
감사합니다.
새해 복 많이 받으세요!