소프트웨어 배치 파일 for문에서 diskpart 실행
2024.09.01 11:50
------------------------------------------------------------------------------------------------------
출처: http://bbs.c3.wuyou.net/forum.php?mod=viewthread&tid=423983
구글 번역:
1. diskpart는 파이프라인을 통해 cmd 명령으로 전달된 diskpart 명령을 받을 수 있지만 명령이 여러 개인 경우 제대로 작동하지 않습니다.
2. 일반적으로 여러 diskpart 명령 세트의 경우 /s 매개변수를 통해 스크립트를 호출하거나 다음과 같은 파이프라인을 통해 스크립트를 완료합니다.
/s의 장점은 일부 diskpart 명령에 오류를 무시할 수 있는 noerr 매개 변수가 있다는 것입니다. 하지만 단점은 스크립트 파일을 미리 생성한 후 호출해야 한다는 점입니다.
오늘 저는 for를 사용하여 일련의 지침을 diskpart에 성공적으로 전달하려고 했습니다. 또한 diskpart에 전달한 다음 실행 결과를 분석 및 처리를 위해 중첩할 정보 흐름으로 사용할 수도 있습니다. 그러나 중첩된 for에는 특정 문자를 표시하려면 작은따옴표와 ^가 필요합니다.
===========================================================
1. 하나의 for 문에서 diskpart 명령 1개는 잘 되지만 같이 2개 이상 실행하면 에러가 납니다.
그러나 위의 스크립트를 이용하면 여러개를 함께 실행할 수가 있습니다.
- 배치 파일을 관리자 권한으로 실행하면 됩니다.
2. 메세지를 삭제하고 라인 수를 아래처럼 줄여도 되는군요.
-----------------------------------------------------------------------------------
@echo off
setlocal ENABLEDELAYEDEXPANSION
set n=0
for /f "delims=" %%c in ('^(for %%r in ^("list disk" "list vol" "sele disk 0" "list disk" "detail disk"
^) do @^(echo %%~r^)^)^|diskpart
') do (if "%%c"=="DISKPART> " (set /a n+=1&echo.) else (if !n! geq 1 echo %%c))
set /a n-=1
pause
-----------------------------------------------------------------------------------
3. 메세지를 삭제하고 하나의 for문에서 실행하기
-----------------------------------------------------------------------------------
@echo off
setlocal ENABLEDELAYEDEXPANSION
set n=0
set "diskpart_cmd=echo list disk ^& echo list vol ^& echo sele disk 0 ^& echo list disk ^& echo detail disk"
for /f "delims=" %%c in ('^(!diskpart_cmd!^)^|diskpart
') do (if "%%c"=="DISKPART> " (set /a n+=1&echo.) else (if !n! geq 1 echo %%c))
set /a n-=1
pause
-----------------------------------------------------------------------------------
댓글 [6]
-
cungice 2024.09.01 12:14
-
수채화 2024.09.01 12:28
이걸 보니 제가 사용하는 VHD 스크립트용 드라이브 문자 바꾸는거랑 엇비슷하네요. ㅋㅋ
@echo off
setlocal enabledelayedexpansion
set "tempFile=%temp%\diskpart_output.txt"
rem 인자가 두 개가 아닌 경우 오류 메시지 출력
if "%~2"=="" (
set "volumeName=VHD_EFI"
set "driveLetter=Z"
call :changeLetter
echo.
echo.
echo 사용법: %0 ^<볼륨 이름^> ^<드라이브 문자^>
echo 인자가 없거나 잘못되어 ^<VHD_EFI^> ^<Z^>으로 설정이 된 상태로 실행이 되었습니다.
goto EOF:
)
rem 인자 저장
set "volumeName=%~1"
set "driveLetter=%~2"
call :changeLetter
:EOF
endlocal
echo List Volume | diskpart
pause
exit
:changeLetter
rem 볼륨 목록을 나열하고 임시 파일에 저장
echo list volume | diskpart > %tempFile%
rem 지정된 볼륨 이름을 찾기
for /f "tokens=2,3 delims= " %%A in ('findstr /c:"%volumeName%" %tempFile%') do set volumeNumber=%%A
rem 볼륨 번호가 설정되지 않은 경우 오류 메시지 출력
if "%volumeNumber%"=="" (
echo 볼륨 "%volumeName%"을 찾을 수 없습니다.
del %tempFile%
exit /b 1
)
rem 지정된 드라이브 문자로 볼륨에 문자 할당
echo 볼륨 %volumeNumber%에 드라이브 문자 %driveLetter%를 할당 중...
(
echo select volume %volumeNumber%
echo assign letter=%driveLetter%
) | diskpart
rem 임시 파일 삭제
del %tempFile%
앞에 인자는 반드시 볼륨만 들어가는게 아니고 시스템 같은거 넣으면 EFI에 문자 넣어줍니다.
-
왕초보 2024.09.01 14:41
실제 활용하시는 소스 감사합니다...
-
머털 2024.09.01 12:54
수고하셨습니다
-
왕초보 2024.09.01 14:41
좋은 정보 감사합니다..
-
상발이 2024.09.01 16:00
수고하셨습니다.
번호 | 제목 | 글쓴이 | 조회 | 추천 | 등록일 |
---|---|---|---|---|---|
[공지] | 강좌 작성간 참고해주세요 | gooddew | - | - | - |
1030 | 소프트웨어| WinNTSetup - VHD(윈도우 설치) 활용 방법 [11] | 무월 | 815 | 40 | 09-08 |
1029 | 소프트웨어| 레인미터와 HWiNFO 연동하기 [5] | 수채화 | 457 | 20 | 09-08 |
1028 | 소프트웨어| 배치 파일 색상 팔레트 [11] | 지후빠 | 944 | 30 | 09-01 |
» | 소프트웨어| 배치 파일 for문에서 diskpart 실행 [6] | sunshine | 675 | 18 | 09-01 |
1026 | 소프트웨어| 배치파일 작은 팁 2가지 [15] | sunshine | 1593 | 34 | 08-26 |
1025 | 소프트웨어| pureBasic - GetPart v0014 디스크 파티션 정보 [15] | 입니다 | 1719 | 49 | 08-14 |
1024 | 소프트웨어| OneDrive로 옮겨진 문서, 다운로드, 사진, 동영상 폴더 원... [3] | Nic네임 | 1418 | 11 | 08-13 |
1023 | 소프트웨어| 가볍고 편리한 런처 LaunchOnFly 소개합니다 [6] | 지금은공부 | 1565 | 21 | 08-01 |
1022 | 소프트웨어| 미니PC 드라이버 백업복원 4편 [최종+++] [17] | sunshine | 2166 | 50 | 07-26 |
1021 | 소프트웨어| 배치파일 관리자 권한으로 실행 [10] | 지후빠 | 2027 | 24 | 07-23 |
1020 | 소프트웨어| 미니PC 드라이버 백업복원 3편 [수정4++] [14] | sunshine | 1392 | 41 | 07-21 |
1019 | 소프트웨어| 자동 업데이트 2in1 배치파일[추가4] [24] | sunshine | 2868 | 48 | 07-15 |
1018 | 소프트웨어| Windows 종료 시 시간 지연(윈도우 종료 지연) [2] | Vincenzo | 2293 | 2 | 07-07 |
1017 | 소프트웨어| 미니PC 드라이버 백업복원 2편 [13] | sunshine | 1499 | 35 | 07-04 |
1016 | 소프트웨어| 아래한글(HWP)에서 폰트(TTF & OTF) 사용 팁 [8] | 승승아빠 | 1566 | 29 | 06-30 |
1015 | 소프트웨어| 미니PC 드라이버 백업복원 1편 [21] | sunshine | 2511 | 50 | 06-21 |
1014 | 소프트웨어| pureBasic - WIM 정보 v0998 - 일부 버그 수정 [19] | 입니다 | 1651 | 48 | 06-12 |
1013 | 소프트웨어| pureBasic - 전원 단추 0370 - 고급 옵션 [18] | 입니다 | 1041 | 41 | 06-12 |
1012 | 소프트웨어| PECMD CMPA 복호화 -- 내용 추가 -- [42] | 夕影 | 1716 | 16 | 06-06 |
1011 | 소프트웨어| pureBasic - WIM 정보 v0995 - 재부팅 후 펌웨어 설정. 임... [12] | 입니다 | 991 | 44 | 05-30 |
수고 많으셨습니다. 감사합니다.