기 타 [2번 파일] 파티션 사용량에 따라서 작업하기
2022.01.17 09:10
어제 질문에 올라온 내용입니다. 어제는 바빠서 오늘 질문을 확인했습니다
데이터 용량은 사용량을 말씀하시는 듯 합니다
구글 검색이 잘 되지 않는다고 하셨는데요. 검색어에 따라서 결과가 달라지더군요
제 경우는 예전에 파티션 크기를 검색한 경험이 있어서 fso.getdrive vbscript으로 비교적 쉽게 원하는 검색이 되었습니다
https://stackoverflow.com/questions/23014986/when-using-getdrive-freespace-is-reporting-incorrect-in-vbscript
Const strDrive = "P:"
intFactor = 1024 ^ 3
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
Set colItems = objWMIService.ExecQuery("select * from Win32_LogicalDisk where DeviceID='" & strDrive & "'")
For Each objItem in colItems
MsgBox "Size: " & FormatNumber(objItem.Size / intFactor)
MsgBox "Free: " & FormatNumber(objItem.FreeSpace / intFactor)
MsgBox "Used: " & FormatNumber((objItem.Size - objItem.FreeSpace) / intFactor)
Next
//////////////////////////////////////////////////////////////////////
위 vbs를 다음 bat 파일로 활용했습니다
//////////////////////////////////////////////////////////////////////
@prompt $s
@color 1f
@cd /d %~dp0
@title 테스트
@mode con cols=170 lines=170
@setlocal enabledelayedexpansion
@reg query HKU\S-1-5-20>nul || (PowerShell start -verb runas '%0'&exit)
set Drive=C:
>"!tmp!\tmp.vbs" echo.Const strDrive = "%Drive%"
>>"!tmp!\tmp.vbs" echo.intFactor = 1024 ^^ 3
>>"!tmp!\tmp.vbs" echo.Set objWMIService = GetObject^("winmgmts:\\.\root\CIMV2"^)
>>"!tmp!\tmp.vbs" echo.Set colItems = objWMIService.ExecQuery^("select * from Win32_LogicalDisk where DeviceID='" ^& strDrive ^& "'"^)
>>"!tmp!\tmp.vbs" echo.For Each objItem in colItems
>>"!tmp!\tmp.vbs" echo. Wscript.Echo ""
>>"!tmp!\tmp.vbs" echo. Wscript.Echo "전체 크기 [GB] = " ^& FormatNumber^(objItem.Size / intFactor^)
>>"!tmp!\tmp.vbs" echo. Wscript.Echo ""
>>"!tmp!\tmp.vbs" echo. Wscript.Echo "남은 크기 [GB] = " ^& FormatNumber^(objItem.FreeSpace / intFactor^)
>>"!tmp!\tmp.vbs" echo. Wscript.Echo ""
>>"!tmp!\tmp.vbs" echo. Wscript.Echo "사용 크기 [GB] = " ^& FormatNumber^(^(objItem.Size - objItem.FreeSpace^) / intFactor^)
>>"!tmp!\tmp.vbs" echo.Next
cscript //nologo "!tmp!\tmp.vbs
for /f "skip=5 tokens=5 delims=. " %%a in ('cscript //nologo "!tmp!\tmp.vbs"') do set used=%%a
if %used% geq 10 goto :next
실행
:next
@del /f/a/q "!tmp!\tmp.vbs"
@echo.
@echo.
@echo.=========================================================================================
@echo. 모든 작업을 완료했습니다
@echo.=========================================================================================
@echo.
@pause
@exit
//////////////////////////////////////////////////////////////////////
bat 파일로 실행해봤습니다
42GB 사용중이라서 건너뛰게 됩니다
그래서 현재 상황에서 실행 화면이 나오게 하려고 기준을 43 GB로 올려서 실행해봤습니다
건너뛰지 않고, 실행 쪽으로 이동하는지 구문 테스트입니다. 그래서 테스트는 성공적입니다
질문하신 분의 댓글을 보면 1회용이 아니라 계속 반복해서 파티션 사용량을 확인하셔서 10GB 넘어가면 실행 중지하시려는 것 같기도 합니다
그런 경우이시면 위 구문에 timeout /t 숫자 [초]와 goto로 반복 하시면 됩니다. 이 방법은 아래 bat 파일을 참고로 하시면 됩니다
저는 예전부터 C드라이브에 남은 용량이 10GB 미만이면 알림 메시지 뜨게 해놨습니다
그 구문을 오늘 검색된 내용으로 변경하여 bat 파일로 실행해봤습니다 [이 bat 파일 구문이 사용기에 올라가지 않네요;;]
1분 간격으로 계속 확인하게 해놨습니다
---------------------------------------------------------------
추가: 2022.01.17 월요일 오전 11:47
천단위 넘어가면 [대략 TB] 코머 , 표시가 됩니다. 그래서 숫자 비교할 때 튕기네요;;
그래서 남은 크기는 코머 , 표시가 되지 않도록 했습니다. 다른 파티션 크기 [전체 크기와 사용 크기]는 코머 , 표시됩니다
위에 bat 화면은 C:은 크기가 적어서 2TB U:의 사용량으로 코머 , 테스트했습니다
C:의 남은 크기와 시간 간격 등은 수정하여 사용하시면 됩니다
2번째 파일: C드라이브 10GB 미만 알림2 - TB까지 고려.bat
2022.01.17 월요일 오후 12:32 - 2번째 파일을 다시 수정 - 오늘 소소한 수정 자주하네요;; 수정했다고 말하기도 그런 사소한 수정입니다
댓글 [9]
-
cungice 2022.01.17 09:25
-
샤 2022.01.17 09:27
수고하셨습니다.
-
빠송 2022.01.17 09:37
늘 감사합니다.
수고 많이 하셨습니다.
-
상발이 2022.01.17 10:32
이렇게 자세한 설명과 예제 파일까지 올려 주셔서 너무 감사합니다.
suk님으로 부터 많은 것을 배우고 있어서 감사합니다.
오늘도 좋은 하루 되세요..
-
ehdwk 2022.01.17 11:45
수고하셨습니다. -
집앞의_큰나무 2022.01.17 12:23
대단 하심!!
다른 용도로 사용할일이 생길것 같아서 후딱 저장 합니다.
-
더애드 2022.01.17 12:35
수고많이하셨습니다^^ 오늘도 좋은하루 행복한하루만땅되세요 ~
-
붉바리 2022.01.17 18:53
감사합니다.
-
미란 2022.01.17 19:43
수고하셨습니다.
수고 많으셨습니다. 감사합니다.