Zasfe's nomal note
알림
위치
태그
손님
관리
쓰기
Search
[Script Tip] 폴더 용량 한꺼번에 구하기
컴퓨터/윈도우
|
2007/10/04 05:10
|
zasfe
|
인쇄
그동안 중요한 자료는 모두 USB에 담아가지고 다닙니다. 하지만 결코 작은 용량이 아닌 1G USB 디스크의 여유공간이 4mb 밖에 안남는 사태가 발생하고야 말았습니다.
그간 정리하는 습관과는 거리가 멀어 복사붙이기로 분류만 해두었는데 폴더는 점점 많아져서 정리의 엄두가 나지 않았습니다.
그러다 찾은것이 "getfoldersize.vbs"
오~ 완전 나이스..
게다가 결과물을 텍스트 파일이 아닌 엑셀로 만들어주기까지 한다.
소스 보기
'---------------------------------------------------------------------------------------
'
' Name: getfoldersize.vbs
' Version: 1.0
' Date: 7-5-2002
' Author: Hans van der Zaag
' Description: getfoldersize.vbs calculates the size of all subfolders within
' a folder and sorts this data in an excel workbook
'
'---------------------------------------------------------------------------------------
rootfolder = Inputbox("Enter directory/foldername: " & _
chr(10) & chr(10) & "(i.e. C:\Program Files or " & _
"
\\Servername\C$\Program
Files)" & chr(10) & chr(10), _
"Getfoldersize", "C:\Program Files")
outputfile = "c:\foldersize_" & Day(now) & Month(now) & Year(now) & ".xls"
Set fso = CreateObject("scripting.filesystemobject")
if fso.fileexists(outputfile) then fso.deletefile(outputfile)
'Create Excel workbook
set objXL = CreateObject( "Excel.Application" )
objXL.Visible = False
objXL.WorkBooks.Add
'Counter 1 for writing in cell A1 within the excel workbook
icount = 1
'Run checkfolder
CheckFolder (FSO.getfolder(rootfolder))
Dim tmpFolderSize
Sub CheckFolder(objCurrentFolder)
For Each objFolder In objCurrentFolder.SubFolders
FolderSize = objFolder.Size
' If objFolder.ParentFolder.Path"d:\hosting" then
Tmp = (FormatNumber(FolderSize, 0, , , 0)/1024)/1024
ObjXL.ActiveSheet.Cells(icount,1).Value = objFolder.Path
ObjXL.ActiveSheet.Cells(icount,2).Value = Tmp
WScript.Echo "CheckFolder : " & Tmp & " " & objFolder.Path
'raise counter with 1 for a new row in excel
icount = icount + 1
Next
End Sub
'sort data in excel
objXL.ActiveCell.CurrentRegion.Select
objXL.Selection.Sort objXL.Worksheets(1).Range("B1"), _
2, _
, _
, _
, _
, _
, _
0, _
1, _
False, _
1
'Lay out for Excel workbook
objXL.Range("A1").Select
objXL.Selection.EntireRow.Insert
objXL.Selection.EntireRow.Insert
objXL.Selection.EntireRow.Insert
objXL.Selection.EntireRow.Insert
objXL.Selection.EntireRow.Insert
objXL.Columns(1).ColumnWidth = 60
objXL.Columns(2).ColumnWidth = 15
objXL.Columns(2).NumberFormat = "#,##0.0"
objXL.Range("B1:B1").NumberFormat = "d-m-yyyy"
objXL.Range("A1:B5").Select
objXL.Selection.Font.Bold = True
objXL.Range("A1:B3").Select
objXL.Selection.Font.ColorIndex = 5
objXL.Range("A1:A1").Select
objXL.Selection.Font.Italic = True
objXL.Selection.Font.Size = 16
ObjXL.ActiveSheet.Cells(1,1).Value = "Survey FolderSize "
ObjXL.ActiveSheet.Cells(1,2).Value = Day(now) & "-" & Month(now) & "-"& Year(now)
ObjXL.ActiveSheet.Cells(3,1).Value = UCase(rootfolder)
ObjXL.ActiveSheet.Cells(5,1).Value = "Folder"
ObjXL.ActiveSheet.Cells(5,2).Value = "Total (MB)"
'Finally close the workbook
ObjXL.ActiveWorkbook.SaveAs(outputfile)
ObjXL.Application.Quit
Set ObjXL = Nothing
'Message when finished
Set WshShell = CreateObject("WScript.Shell")
Finished = Msgbox ("Script executed successfully, results can be found in " & Chr(10) _
& outputfile & "." & Chr(10) & Chr(10) _
& "Do you want to view the results now?", 65, "Script executed successfully!")
if Finished = 1 then WshShell.Run "excel " & outputfile
하지만..
엑셀로 불러오는것보다 커맨드라인으로 바로바로 확인이 가능할거 같다는 생각을 하게되고 좀더 일반적인 환경에서 사용이 가능하도록 스크립트내에서 확인이 가능하도록 변경하였다.
■ 변경내용
- 커맨드라인에서 결과를 바로 확인할수 있도록 변경.
- 하위폴더까지 나오면서 폴더가 복잡한 구조에서는 보기도 힘들다.
- 파일용량을 보기 편한 단위로 변경할수 있도록
'
' cscript Get_folder_size_cmd.vbs
'
Dim CRLF, TAB :TAB = CHR( 9 ):CRLF = CHR( 13 ) & CHR( 10 )
Dim Tmp, totalsize
totalsize =0
rootfolder = "Z:\"
Set fso = CreateObject("scripting.filesystemobject")
'Run checkfolder
CheckFolder (FSO.getfolder(rootfolder))
wscript.echo "totalsize : "&int((FormatNumber(totalsize, 0, , , 0)/1024)/1024/1024) & " GB"
Sub CheckFolder(objCurrentFolder)
For Each objFolder In objCurrentFolder.SubFolders
If Instr(objFolder.Path,"RECYCLER") =0 and Instr(objFolder.Path,"System Volume Information") =0 then
FolderSize = objFolder.Size
totalsize = totalsize+FolderSize
Tmp = (FormatNumber(FolderSize, 0, , , 0)/1024)/1024
If int(Tmp)/1024 > 1 then
WScript.Echo objFolder.Path& TAB & int(Tmp)/1024 &" GB"
else
WScript.Echo objFolder.Path& TAB & int(Tmp) &" MB"
end if
end if
Next
End Sub
"윈도우" 카테고리의 다른 글
네임서버 갱신 확인하는 배치파일
(댓글 0개 / 트랙백 0개)
2008/11/11
Filezilla Server 한글깨짐패치 사용하기
(댓글 0개 / 트랙백 0개)
2008/11/04
웹나이트가 2.2 로 업데이트 되었습니다.
(댓글 0개 / 트랙백 0개)
2008/10/22
IIS 와 vbscript
(댓글 0개 / 트랙백 0개)
2008/10/17
nslookup 의 사용 방법
(댓글 0개 / 트랙백 0개)
2008/09/29
ADODB 개체를 이용한 포트 스캔
(댓글 0개 / 트랙백 0개)
2008/09/16
웹쉘을 이용한 iframe 코드를 추가원리
(댓글 2개 / 트랙백 0개)
2008/09/09
webknight 2.2
(댓글 0개 / 트랙백 0개)
2008/09/07
[ Autoit / MSSQL ] 데이터베이스를 사용하고자 할경우
(댓글 0개 / 트랙백 0개)
2008/09/04
[ Autoit / CmdLine ] 커맨드라인을 입력받아 처리하는 함수의 일부입니다.
(댓글 0개 / 트랙백 0개)
2008/09/04
2007/10/04 05:10
2007/10/04 05:10
TAG
VBScript
트랙백이 없고
,
댓글
2
개가 달렸습니다.
트랙백을 보내세요
트랙백 주소
::
http://zasfe.com/trackback/52
댓글을 달아 주세요
Hoya~
2008/08/05 18:31
Reply
Modify
재밌네요.ㅎㅎ
zasfe
2008/08/10 03:03
Modify
반복작업이 제일 귀찮은 작업이라 ㅋ
감사합니다.
이름 (Your Name)
패스워드 (Your Password)
홈페이지 (Your Website)
비밀글
Submit
◀ Prev
1
...
43
44
45
46
47
48
49
50
51
...
83
Next ▶
Recent Post
네임서버 갱신 확인하는 배치파일
내 웹사이트가 있는 서버 관리자는 보안을 모른다?
(2)
Filezilla Server 한글깨짐패치 사용하기
Mass SQL Injection 일괄 삭제하기 - VBScript
(6)
방귀의 특효약?
웹나이트가 2.2 로 업데이트 되었습니다.
종이봉투 무상제공 의무제도가 시행되었다고 합니다.
네이버 이상해...!!
IIS 와 vbscript
VISTA 를 사용하기 시작했습니다.
(4)
Recent Comment
zasfe_
도움이 되었다니 다행입니다. 중복구문도 처리를...
ienfant_
ㅎㅎ 덕분에 업무처리 시간이 줄어들었습니다. 그...
zasfe_
좀 익숙해지면 쉽습니다. ^^
zasfe_
감사합니다만 글을 몽땅 퍼가시는건 좀 자제를..;;
김도형_
이래저래 좋아지긴 했는데 무거워서; 낑낑;;
Recent Trackback
Mass SQL Injection 일괄 삭제하기 - VBScript
WebKnight 보안관련 웹 서버용 ISAPI 필터 #5
svc.host를 가장한 arp 스푸핑 공격
통계
433
150
-60 days
today : 72
댓글을 달아 주세요
재밌네요.ㅎㅎ
반복작업이 제일 귀찮은 작업이라 ㅋ
감사합니다.