기 타 배치 파일에서 폴더의 용량 단위 변환 표시
2023.02.28 20:50
사용한 du64.exe는 아래 사이트에서 다운로드하여 Windows 폴더에 복사하고 사용합니다.
https://learn.microsoft.com/en-us/sysinternals/downloads/du
@echo off
du64.exe -q C:\Users\Administrator\Documents > Docsize.txt
for /f "tokens=2" %%e in ('find "Size: " Docsize.txt') do set Docsize=%%e
echo %Docsize% bytes
pause
exit
위처럼 작성하면
%Docsize% 값으로 폴더 용량이 2,553,173 처럼 bytes로 표시가 되는데,
이 bytes 숫자 값이
1메가 이상인 경우 MB 단위로,
1기가 이상인 경우 GB 단위로,
1테라 이상인 경우 TB 단위로
자동으로 변환되어 나타나게 할 수 있는지 궁금하여 질문 올립니다.
댓글 [21]
-
빨강모자 2023.03.01 01:09 -
가로등 2023.03.01 10:22
링크해 주신 내용 살펴보도록 하겠습니다. 답변 주셔서 감사합니다.
-
가로등 2023.03.01 10:34
답변 주셔서 감사합니다.
저도 검색에서 아래와 같은 vbs 파일 내용을 보았는데
위 배치파일에서 활용 가능할지 모르겠습니다.
convertSize.vbs
Function ConvertSize(byteSize)
dim Size
Size = byteSize
Do While InStr(Size,",") 'Remove commas from size
CommaLocate = InStr(Size,",")
Size = Mid(Size,1,CommaLocate - 1) & _
Mid(Size,CommaLocate + 1,Len(Size) - CommaLocate)
Loop
Suffix = " Bytes"
If Size >= 1024 Then suffix = " KB"
If Size >= 1048576 Then suffix = " MB"
If Size >= 1073741824 Then suffix = " GB"
If Size >= 1099511627776 Then suffix = " TB"
Select Case Suffix
Case " KB" Size = Round(Size / 1024, 1)
Case " MB" Size = Round(Size / 1048576, 1)
Case " GB" Size = Round(Size / 1073741824, 1)
Case " TB" Size = Round(Size / 1099511627776, 1)
End Select
ConvertSize = Size & Suffix
End Function
-
메리아 2023.03.01 12:39 -
-
가로등 2023.03.01 14:12
저는 완전 초보라서 배치파일에서 vbs를 어떻게 활용하는지도 잘 모르는 수준입니다.
가능하다고 하시니 알아보도록 하겠습니다. 감사합니다.
-
kernel 2023.03.01 14:22
C# 도 파워쉘 처럼 스크립트가 가능하고, 파워쉘 보다 C# 이 할수 있는 영역이 훨씬 더 크고 많죠.
using System;
namespace ConsoleApp1 {
internal class Program {
static string UnitSize(UInt64 size) {
if (size < 1024) { return $"{size} bytes"; }
var delta = (int)(Math.Log(size) / Math.Log(1024));
return $"{size / Math.Pow(1024, delta):F2} {("KMGTP")[delta - 1]}B";
}
static void Main(string[] args) {
Console.WriteLine(UnitSize(5943243681024));
}
}
}
또한 C#도 Roslyn API 이용해서 파워쉘 처럼 파일 없이 한줄로 표현하게 하는 것도 가능.파워쉘 보다 C#으로 할 수 있는 것들이 훨씬 많음. -
가로등 2023.03.01 15:10
글 올려주셔서 감사합니다.
-
zerojiddu 2023.03.01 15:18 C#가 스크립트가 가능하단게 무슨말인가요? 첨 들어보는데.
파워쉘 명령어들이(cmdlet) C#로 많이 만들었어요. 파워쉘 명령어 Add-Type 가 C# 코드나 .cs 파일을 .exe 를 않만들고 메모리상에서 바로 컴파일하는 기능이예요. -
kernel 2023.03.01 15:27
Making Your Life Easier with C# Scripting -- Visual Studio Magazine
기본적인 내용은 위 사이트 참고하면 될 듯 하고....
Roslyn API 이용해서 파워쉘 처럼 파일없이 한줄로 사용하게 만드는 것도 가능.
C#이 컴파일 해서 .exe 나 .dll 어셈블리 모듈을 만들어서 사용 할 수 도 있지만
스크립트로 실행하는 것도 이미 오래 전 부터 가능했음.
-
zerojiddu 2023.03.01 16:35 올리신 링크보니,
파워쉘, cmd 에서 필수적으로 쓰는 기능은 안된다네요.
비쥬얼 스튜디오를 깔아야되고 그속에서 전체코드 컴파일 안하고 스크립트식으로 한줄씩, 한구문씩 바로 확인하는 기능이네요.
윈도상에서 일반적으로 쓰는 스크립트는 아닌거 같습니다.
Sadly, the CSI command prompt doesn't support any folder navigation and management commands (e.g. cd, dir, etc.) so there's no built-in way to navigate to the folder -
kernel 2023.03.01 17:58
C# 스크립트가 처음이라 믿기지 않나 보네요. 하하.
파워쉘은 도스 시대의 코맨드라인 텍스트 버전인 배치 스크립트를 대체하기 위해 만들어진 일종의 Shell이라서
디렉토리를 바꾸거나 열거하는 기능을 갖고 있는 것에 불과한 거고, 스크립트 기능 자체와는 본질적으로 무관한 거죠.
CSI C# 스크립트 Environment 는 파이썬 쉘 처럼... Interactive 하게 C# 코드를 실행할 목적으로 만들어진 거고
디렉토리를 바꾸거나 열거하는 것은 부가적인 쉘 기능에 불과할 뿐, 스크립트와는 본질적으로 무관 합니다.
C# 스크립트 파일을 다음과 같이 작성했다고 합시다
<test.csx>
using System;
using System.IO;
class Program {
public string UnitSize(Int64 size) {
if (size < 1024) { return $"{size} bytes"; }
var delta = (int)(Math.Log(size) / Math.Log(1024));
return $"{size / Math.Pow(1024, delta):F2} {("KMGTP")[delta - 1]}B";
}
}
var o = new Program();
DriveInfo[] drvs = DriveInfo.GetDrives();
foreach (var d in drvs) {
if (d.IsReady)
Console.WriteLine(d.Name + " Disk Free Space = " + o.UnitSize(d.TotalFreeSpace) );
}
-
지후빠 2023.03.01 17:06
배치파일과 VBS 이용하여 다음처럼 할 수 있습니다. (VBS에는 한 줄 추가)
속도면에서 불리할 수 있지만 du64 ->dir /s/a 로 대체해봤습니다.(du64 불필요)
외부라서 귀가 후 파일 하나로 좀 더 단순화 해보겠습니다. ^^
-
가로등 2023.03.01 20:29
vbs를 배치파일에서 활용하는 방법을 전혀 몰랐었는데,
OS 드라이브의 문서 폴더로 5기가 이상의 단일 파일 등을 복사해 넣고,
PE에서 올려주신 파일로 테스트 해보니, GB 단위로 아주 잘 표시됩니다.
PE에서 운영체제가 설치된 사용자 폴더의 백업 및 복원을 위한 배치 파일을 작성하면서 궁금한 내용이었는데,
많은 도움이 되었습니다.
좋은 활용법을 가르쳐주셔서 감사합니다.
-
지후빠 2023.03.01 17:51
(외부에서 기다리는 동안) 파워쉘 이용하는 파일 한개짜리 버전 만들어 봤습니다.^^
doc_size_w_ps.cmd운전중 생각 나서 조금 수정하였습니다.
-
kernel 2023.03.01 18:38
C++ 공부는 좀 해요? 60 훨씬 넘은 이 늙은이도 공부를 계속 하는데...
-
지후빠 2023.03.01 19:10
커널님 안녕하십니까? ^^
작년에 powershell 책 한권 독학했는데 안쓰니 머리에 남는 것이 별로 없는 것 같습니다.ㅜㅜ
올해는 C# 책 한권 보고 있는데 마찮가지로 안쓰니 진도가 안나갑니다. 1/5쯤...
권해주신 C++은... 배우고 싶은 것과 사용하는 것과의 갭이 커서... 반성합니다. ㅠㅠ
-
kernel 2023.03.01 18:02
위의 <test.csx> C# 스크립트 코드를 다음과 같이 실행하면
디스크 프리 공간을 출력할 겁니다.
-
kernel 2023.03.01 18:05
C# 개발을 전문적으로 하는 개발자들을 위해 MS에서 제공해 주고있는 CSI는 위에서 언급한대로
파이썬 환경 처럼 Interactive한 접근방식을 위주로 구현되어 있기 때문에....
스크립트 기능을 확장해서 쓰고 싶다면 앞서 언급한 대로 Roslyn API 이용해서 CSI 를 대체하는
Script Execution Environment 를 구현해서 쓰면 됩니다.
-
zerojiddu 2023.03.01 18:52 네. 그 코드로 .csx 저장해
csi.exe 로 확인해봤습니다.
음.. 물어볼게 더 있지만 일단 알겠습니다.
C# 스크립트 기억해두고 차차 알아가겠습니다.
-
메리아 2023.03.01 20:07 -
-
kernel 2023.03.01 21:00
Visual Studio를 설치해야만 하는 건 아니고, 단독으로 설치해서 쓰면 될 일이고....
앞서 언급했듯이 CSI 구현방식이 마음에 안들면 직접 Script Execution Environment 를 구현해서 쓰면 될 일.
파워쉘은 ...
C:\Windows\System32\WindowsPowerShell\v1.0 와...
C:\Windows\SysWOW64\WindowsPowerShell\v1.0 에...
두 곳에 설치되어 있는 것을 감안하면 단독으로 CSI 를 설치해서 쓰는 게 더 가벼운 환경 임.
C#을 자유롭게 다룰 줄 알면...
Roslyn API 이용해서 CSI 를 대체하는 Execution Environment를 Light-weight로 만들어 쓰면 될 일이고.
스크립트 엔진 자체는 파워쉘이 더 무거워요.
번호 | 제목 | 글쓴이 | 조회 | 등록일 |
---|---|---|---|---|
[공지] | 질문과 답변 게시판 이용간 유의사항 | gooddew | - | - |
96273 | 윈 도 우| 와이파이 블루투스 도와주실 수 있을까요.. [5] | 날아가 | 647 | 03-02 |
96272 | 윈 도 우| 윈도우 드라이버를 없애고 싶은데 프로그램이 있을까요? [7] | 날아가 | 435 | 03-02 |
96271 | 윈 도 우| 노트북 포맷하지 않고 윈도 암호 재설정하는 방법 좀 알려... [10] | 나빌레라1 | 428 | 03-02 |
96270 | 윈 도 우| 윈도우10 만능고스트.. [1] | cosmosa | 759 | 03-02 |
96269 | 윈 도 우| 원드라이브에 이것 수정할 방법이 없을까요? | 타천사둘리 | 211 | 03-02 |
96268 | 윈 도 우| 윈도우 11에서 세이크럽 되는 방법있나요 [4] | 세븐좋아 | 375 | 03-02 |
96267 | 서버 / IT| 오픈소스 근태관리 개발(?) [1] | Airbrone13 | 449 | 03-02 |
96266 | 윈 도 우| 윈11 마우스클릭시 선택항목 진하게표시 | 칼슘 | 367 | 03-02 |
96265 | 기 타| 페이스북 이전 계정으로 변경할 수 없나요 ? [2] | 커피한잔 | 212 | 03-01 |
96264 | 윈 도 우| amd 5600G 화면 리프레시 딜레이 [4] | 토르망치 | 535 | 03-01 |
96263 | 소프트웨어| Snagit 편집기 최근항목 [4] | 단디™ | 394 | 03-01 |
96262 | 윈 도 우| CLSID 값이 어떻게 될까요? [2] | dreamsbk1 | 344 | 03-01 |
» | 기 타| 배치 파일에서 폴더의 용량 단위 변환 표시 [21] | 가로등 | 959 | 02-28 |
96260 | 소프트웨어| 사진 4장씩 보이게 해서 4A 사이즈로 설정하고 jpeg 등으로... [4] | 예스어데이 | 789 | 02-28 |
96259 | 윈 도 우| 11.22621 설정의 에너지 사용량 경고 없엘 수 있을까요? | DarknessAn | 252 | 02-28 |
96258 | 윈 도 우| ghost spectre 아시는분 질문 드려봅니다. [5] | 이제부터아 | 513 | 02-28 |
96257 | 하드웨어| GPU 메모리는 작업 후 메모리 반환이 안되나요? [7] | feynman | 693 | 02-28 |
96256 | 기 타| 매개 변수 이름:value | 쌘돌 | 249 | 02-27 |
96255 | 소프트웨어| 리눅스 간단한거 하나만 여쭤볼게요. [13] | reg | 743 | 02-27 |
96254 | 소프트웨어| 포토샵 사용하는 방법 [4] | 맨션에살자 | 928 | 02-27 |
참고용 의견 링크입니다.
https://superuser.com/questions/1135707/get-file-size-in-kb-mb-gb-in-windows-batch-file
https://superuser.com/questions/1265154/windows-how-to-convert-batch-program-output-of-bytes-to-kb-mb-or-gb
>> set /a result1=%bytes% / 1024