উইন্ডোজ কমান্ড লাইন থেকে ফোল্ডারের আকার পান


128

উইন্ডোজে কোনও তৃতীয় পক্ষের সরঞ্জাম ব্যবহার না করে কমান্ড লাইন থেকে কোনও ফোল্ডারের আকার পাওয়া সম্ভব?

উইন্ডোজ এক্সপ্লোরার → বৈশিষ্ট্যগুলির ফোল্ডারে ডান ক্লিক করার সময় আপনি যেভাবে ফলাফল পাবেন তা চাই।

উত্তর:


120

আপনি কেবল পুনরাবৃত্ত আকারে মাপ যোগ করতে পারেন (নিম্নলিখিতটি একটি ব্যাচের ফাইল):

@echo off
set size=0
for /r %%x in (folder\*) do set /a size+=%%~zx
echo %size% Bytes

তবে এটিতে বেশ কয়েকটি সমস্যা রয়েছে কারণ cmd32-বিট স্বাক্ষরিত পূর্ণসংখ্যার গাণিতিকের মধ্যে সীমাবদ্ধ। সুতরাং এটি 2 জিআইবি ভুল 1 এর উপরে আকারগুলি পাবে । তদতিরিক্ত এটি সম্ভবত একাধিকবার সিমলিংক এবং জংশনগুলি গণনা করবে সুতরাং এটি সর্বোপরি একটি উচ্চতর আবদ্ধ, সঠিক আকার নয় (যদিও কোনও সরঞ্জামের সাথে আপনার এই সমস্যাটি থাকবে)।

একটি বিকল্প পাওয়ারশেল:

Get-ChildItem -Recurse | Measure-Object -Sum Length

বা সংক্ষিপ্ত:

ls -r | measure -sum Length

আপনি যদি এটি সুন্দর চান:

switch((ls -r|measure -sum Length).Sum) {
  {$_ -gt 1GB} {
    '{0:0.0} GiB' -f ($_/1GB)
    break
  }
  {$_ -gt 1MB} {
    '{0:0.0} MiB' -f ($_/1MB)
    break
  }
  {$_ -gt 1KB} {
    '{0:0.0} KiB' -f ($_/1KB)
    break
  }
  default { "$_ bytes" }
}

আপনি এগুলি সরাসরি থেকে ব্যবহার করতে পারেন cmd:

powershell -noprofile -command "ls -r|measure -sum Length"

1 আমার কোথাও ব্যাচ ফাইলগুলিতে একটি আংশিক-সমাপ্ত বিগনাম গ্রন্থাগার রয়েছে যা কমপক্ষে স্বেচ্ছাসেবী-নির্ভুলতা পূর্ণসংখ্যার যোগ হয় right আমার সত্যিই এটি ছেড়ে দেওয়া উচিত, আমার ধারণা :-)


+1 আমি সেরকম কিছু খুঁজে পাওয়ার জন্য get-help * আউটপুটে ঘুরে বেড়াচ্ছিলাম।
স্টিভ

2
স্টিভ, আমার দৃষ্টিতে পাওয়ারশেলটি ইউনিক্সের চেয়ে আরও বেশি ইউনিক্স-ওয়াই যে বেশিরভাগ মূল আদেশগুলি সত্যই অরথোগোনাল। ইউনিক্সে duডিরেক্টরি আকার দেয় কিন্তু এটি যা করছে তা গাছের হাঁটাচলা এবং সংক্ষেপণ। এমন কিছু যা এখানে খুব সুন্দরভাবে পাইপলাইনে প্রকাশ করতে পারে :-)। সুতরাং পাওয়ারশেলের জন্য আমি সাধারণত সন্ধান করি আপনি কীভাবে উচ্চ-স্তরের লক্ষ্যটিকে উপযুক্ত নিম্ন-স্তরের ক্রিয়াকলাপগুলিতে পচন করতে পারেন।
জোয়

3
আমি দেখতে পাচ্ছি, লুকানো ফোল্ডারগুলি সেভাবে উপেক্ষা করা হবে। আমি যদি লুকানো ফোল্ডারগুলিকেও অন্তর্ভুক্ত করতে চাই তবে ls -for -r কাজ করে।
Garg

2
folder\*আমি যে ফোল্ডারটি জায়গায় রেখেছি তার আকারটি আমার জন্য কাজ করছে না যা 0 বাইট দেখায়, কোনও সমাধান আছে কি?
আইটি গবেষক

2
কিছুটা ভাল দেখাচ্ছে সংস্করণ: পাওয়ারশেল -নোপ্রোফাইল-কম্যান্ড "'{0: N0}' -f (ls -r | পরিমাপ -s দৈর্ঘ্য)। সুম"
জুমালিফাইগার্ড

120

এর জন্য একটি বিল্ট-ইন উইন্ডোজ সরঞ্জাম রয়েছে :

dir /s 'FolderName'

এটি প্রচুর অপ্রয়োজনীয় তথ্য মুদ্রণ করবে তবে শেষটি ফোল্ডারের আকারের মতো হবে:

 Total Files Listed:
       12468 File(s)    182,236,556 bytes

আপনি যদি লুকানো ফোল্ডার যুক্ত করতে চান /a


7
আপনার যদি পূর্ণসংখ্যার ফেরতের মান প্রয়োজন না হয় তবে এটি সর্বাধিক মার্জিত সমাধান। দ্রষ্টব্য: '/ এ' স্যুইচটিতে মোট আকারের মধ্যে লুকানো এবং সিস্টেম ফাইল অন্তর্ভুক্ত থাকবে।
অরণ ডি। লর্ড

1
আমার ধারণা, কেবি বা এমবি এর মতো আরও কিছু দরকারী ইউনিটে ফাইল আকারগুলি মুদ্রণ করা সম্ভব নয়?
ডেভিড ফেরেঞ্জি রোগোয়ান

একক উদ্ধৃতির পরিবর্তে ডাবল উদ্ধৃতি
ব্যবহারকারী 2924019

66

আমি এই লিঙ্কটিতে মাইক্রোসফ্ট দ্বারা সরবরাহ করা সাইনটার্নালস স্যুট থেকে ইউটিলিটি ডিইউ ডাউনলোড করার পরামর্শ দিচ্ছি http://technet.microsoft.com/en-us/sysinternals/bb896651

usage: du [-c] [-l <levels> | -n | -v] [-u] [-q] <directory>
   -c     Print output as CSV.
   -l     Specify subdirectory depth of information (default is all levels).
   -n     Do not recurse.
   -q     Quiet (no banner).
   -u     Count each instance of a hardlinked file.
   -v     Show size (in KB) of intermediate directories.


C:\SysInternals>du -n d:\temp

Du v1.4 - report directory disk usage
Copyright (C) 2005-2011 Mark Russinovich
Sysinternals - www.sysinternals.com

Files:        26
Directories:  14
Size:         28.873.005 bytes
Size on disk: 29.024.256 bytes

আপনি যখন এটির দিকে যাচ্ছেন, অন্যান্য ইউটিলিটিগুলি একবার দেখুন। তারা প্রতিটি উইন্ডোজ পেশাদারের জন্য জীবনরক্ষক


11
আমার ধারণা, এটি খুব সহজেই "কোনও তৃতীয় পক্ষের সরঞ্জাম ছাড়াই"।
জোয়

11
ওহ ঠিক, তবে এটি পরিবারকে 'তৃতীয় পক্ষ' হিসাবে বিবেচনা করা উচিত নয় বলে মনে করেছিল।
স্টিভ

1
ভাল, মঞ্জুর করা হয়েছে, তবে এটি এখনও একটি অতিরিক্ত ডাউনলোড (বা \\live.sysinternals.comএটি এখনও বিদ্যমান থাকলে ব্যবহার করে )। যদিও আমি আন্তরিকভাবে একমত হই যে, সমস্ত সিস্টেটারাল সরঞ্জামগুলি ডিফল্টরূপে অন্তর্ভুক্ত করা উচিত। যদিও অনেক ব্যবহারের জন্য পাওয়ারশেল বেশ উপযুক্ত প্রতিস্থাপন।
জোয়

1
কেউ কি পাওয়ারশেল বলেছিল? নিম্নলিখিতগুলি ব্যবহার করে দেখুন: "{0: N2}" -f ((গেট-চাইল্ড আইটেম সি: \ টেম্প-রেকর্ডস | পরিমাপ-অবজেক্ট-প্রপার্টি দৈর্ঘ্য -সুম) um সুম / 1 এমবি) + "এমবি"
জন হোমার

3
আমি আপনাকে সবাইকে মার্ক রাশিনোভিচ যেভাবে বিকাশ করে তা ডাউনলোড করার পরামর্শ দিচ্ছি :) যখনই আমি আমার জীবন রক্ষার জন্য কোনও সরঞ্জাম পাই তখনই আমি এই নামটি দেখতে থাকি।
dkellner

46

এক রৈখিক:

powershell -command "$fso = new-object -com Scripting.FileSystemObject; gci -Directory | select @{l='Size'; e={$fso.GetFolder($_.FullName).Size}},FullName | sort Size -Descending | ft @{l='Size [MB]'; e={'{0:N2}    ' -f ($_.Size / 1MB)}},FullName"

একই তবে পাওয়ারশেল:

$fso = new-object -com Scripting.FileSystemObject
gci -Directory `
  | select @{l='Size'; e={$fso.GetFolder($_.FullName).Size}},FullName `
  | sort Size -Descending `
  | ft @{l='Size [MB]'; e={'{0:N2}    ' -f ($_.Size / 1MB)}},FullName

এটি নিম্নলিখিত ফলাফল উত্পাদন করা উচিত:

Size [MB]  FullName
---------  --------
580,08     C:\my\Tools\mongo
434,65     C:\my\Tools\Cmder
421,64     C:\my\Tools\mingw64
247,10     C:\my\Tools\dotnet-rc4
218,12     C:\my\Tools\ResharperCLT
200,44     C:\my\Tools\git
156,07     C:\my\Tools\dotnet
140,67     C:\my\Tools\vscode
97,33      C:\my\Tools\apache-jmeter-3.1
54,39      C:\my\Tools\mongoadmin
47,89      C:\my\Tools\Python27
35,22      C:\my\Tools\robomongo

1
বেস ফোল্ডারে এমবিতে সমস্ত ফাইল এবং আকার প্রদর্শন করার উপায় আছে কি? এই ক্ষেত্রে `C: \ আমার \ সরঞ্জাম`
টমাস

2
এছাড়াও প্রচুর ফোল্ডার থাকলে এটি ভেঙে যায় (উদাহরণস্বরূপ সি: ড্রাইভে)
রুনক টমাস

0.00 C:\Windowsআমি কি সমস্ত ফোল্ডারের জন্য এটি ইতিমধ্যে অপ্টিমাইজ করতে পারি, ইতিমধ্যে প্রশাসক হিসাবে চালানোর চেষ্টা করেছি
Tilo

এটি ভাল তবে এটি আমার উপাদান ফোল্ডারের নামগুলি কেটে দেয়। এগুলি পুরোপুরি প্রদর্শন করার আদেশ কী?
sean.net

@ সিএন.টোন. আপনার মানে কি দীর্ঘ ফোল্ডারগুলির ক্ষেত্রে "..." দিয়ে শেষ হবে? এটি ft( Format-Table) কীভাবে কাজ করে। আপনি এর flপরিবর্তে ( Format-List)
frizik

16

আপনি যদি নিজের কম্পিউটারে গিট ইনস্টল করেন (আরও বেশি বেশি সাধারণ হয়ে উঠছেন) কেবল এমএনডাব্লু 32 খুলুন এবং টাইপ করুন: du folder


4
আপনি du -h -d 1 folder | sort -hযদি মানব পাঠযোগ্য আকার, কেবলমাত্র এক স্তর সাব-ডাইরেক্টরিজ এবং আকার অনুসারে বাছাই করতে চান তবে নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন ।
vard

8

আমি https://github.com/aleksaan/diskusage ইউটিলিটি ব্যবহার করার পরামর্শ দিই । খুব সহজ এবং সহায়ক। এবং খুব দ্রুত।

কমান্ড শেল টাইপ করুন

diskusage.exe -path 'd:/go; d:/Books'

এবং আকার অনুসারে সাজানো ফোল্ডারগুলির তালিকা পান

  1. | ডিআইআর: ডি: / গো | সাইজ: 325.72 এমবি | ডেপথ: ১
  2. | ডিআইআর: ডি: / বইস | সাইজ: 14.01 এমবি | ডেপথ: ১

এই উদাহরণটি এইচডিডি তে 272 মিমি কার্যকর করা হয়েছিল ।

বিশ্লেষণের জন্য আপনি সাবফোল্ডারগুলির গভীরতা বৃদ্ধি করতে পারেন, উদাহরণস্বরূপ:

diskusage.exe -path 'd:/go; d:/Books' -depth 2

এবং কেবলমাত্র নির্বাচিত ফোল্ডারগুলির জন্য নয় এর সাবফোল্ডারগুলির জন্যও মাপ পান get

  1. | ডিআইআর: ডি: / গো | সাইজ: 325.72 এমবি | ডেপথ: ১
  2. | ডিআইআর: ডি: / গো / পিকেজি | সাইজ: 212.88 এমবি | ডেপথ: 2
  3. | ডিআইআর: ডি: / গো / এসসিআর | সাইজ: 62.57 এমবি | ডেপথ: ২
  4. | ডিআইআর: ডি: / গো / বিন | সাইজ: 30.44 এমবি | ডেপথ: 2
  5. | ডিআর: ডি: / বই / দাবা | সাইজ: 14.01 এমবি | ডেপথ: 2
  6. | ডিআইআর: ডি: / বইস | সাইজ: 14.01 এমবি | ডেপথ: ১
  7. | ডিআইআর: ডি: / গো / এপিআই | সাইজ: 6.41 এমবি | ডেপথ: 2
  8. | ডিআইআর: ডি: / গো / টেস্ট | সাইজ: 5.11 এমবি | ডেপথ: 2
  9. | ডিআইআর: ডি: / গো / ডক | সাইজ: 4.00 এমবি | ডেপথ: 2
 10. | ডিআইআর: ডি: / গো / মিসক্ট | সাইজ: 3.82 এমবি | ডেপথ: 2
 11. | ডিআইআর: ডি: / গো / লাইব | সাইজ: 358.25 কেবি | ডেপথ: 2

* সার্ভারের 3.5Tb 3m12 এস জন্য স্ক্যান করা হয়েছে


নতুন সংস্করণ প্রকাশ! github.com/aleksaan/diskusage Improvments: 1) SyMLink এর মাপের সাথে সঠিক কাজ 2) বিশ্লেষণযুক্ত বস্তু সম্পর্কে orevall তথ্য
আলেকজান্ডার আনুফ্রিভ

2.0.0 সংস্করণ প্রকাশ! github.com/aleksaan/diskusage/releases/tag/v2.0.2 - ইনলাইন প্যারামিটার পরিবর্তে কনফিগারেশন ফাইল - সাধারণ ব্যবহারের মোড (যে কোনও ফোল্ডারে এক্সিকিউটেবল ডিস্কাসেজ, এটি চালান এবং ফলাফল পান) - সঠিক ফলাফল আউটপুট (লাইন প্রতীক জয়ের সঠিক শেষ) / ইউনিক্স) - ফলাফলগুলি ফাইল করতে বা এটি কনসোল মোডে পাওয়ার জন্য সংরক্ষণ করুন (বিকল্প 'টফিল')
আলেকজান্ডার আনুফ্রিভ

দয়া করে নোট করুন যে আপনি একজন লেখক। (এইখান থেকে stackoverflow.com/help/promotion : "যাই হোক, আপনি আপনার অন্তর্ভুক্তি আপনার উত্তর প্রকাশ আবশ্যক।" )
aeracode

6

এখানে বর্তমান ডিরেক্টরি অধীন সমস্ত ফোল্ডারের আকার এবং ফাইলের গণনা তালিকা করতে আমি লিখছি একটি পাওয়ারশেল কোড। আপনার প্রয়োজন অনুযায়ী নিখরচায় পুনরায় ব্যবহার বা সংশোধন করুন।

$FolderList = Get-ChildItem -Directory
foreach ($folder in $FolderList)
{
    set-location $folder.FullName
    $size = Get-ChildItem -Recurse | Measure-Object -Sum Length
    $info = $folder.FullName + "    FileCount: " + $size.Count.ToString() + "   Size: " + [math]::Round(($size.Sum / 1GB),4).ToString() + " GB"
    write-host $info
}

আমার জন্য কাজ কর. যদি আপনার মাথা বিহীন সার্ভারে থাকে তবে দরকারী।
অ্যান্ড্রু প্যাট

সরল ও মার্জিত! আমার সংস্করণ: $FolderList = Get-ChildItem -Directory -Force; $data = foreach ($folder in $FolderList) { set-location $folder.FullName; $size = Get-ChildItem -Recurse -Force | Measure-Object -Sum Length; $size | select @{n="Path"; e={$folder.Fullname}}, @{n="FileCount"; e={$_.count}}, @{n="Size"; e={$_.Sum}} } এটি অবজেক্টগুলি সরবরাহ করবে (আরও পাওয়ারশেল-ইশ), 'ফাইলকাউন্ট' এবং 'আকার' পূর্ণসংখ্যা (যাতে আপনি পরে এগুলি প্রসেস করতে পারেন, প্রয়োজন হলে), এবং 'আকার' বাইটে রয়েছে, তবে আপনি সহজেই এটিকে রূপান্তর করতে পারেন জিবি (বা আপনি যে ইউনিটটি চান) এর সাথে $Data.Size / 1GB
কার্পোপার

বা একটি ওয়ান-লাইনার:$Data = dir -Directory -Force | %{ $CurrentPath = $_.FullName; Get-ChildItem $CurrentPath -Recurse -Force -ErrorAction SilentlyContinue | Measure-Object -Sum Length | select @{n="Path"; e={$CurrentPath}}, @{n="FileCount"; e={$_.count}}, @{n="Size"; e={$_.Sum}} }
কার্পোপার

2

এই কোড পরীক্ষা করা হয়। আপনি এটি আবার পরীক্ষা করতে পারেন।

@ECHO OFF
CLS
SETLOCAL
::Get a number of lines contain "File(s)" to a mytmp file in TEMP location.
DIR /S /-C | FIND "bytes" | FIND /V "free" | FIND /C "File(s)" >%TEMP%\mytmp
SET /P nline=<%TEMP%\mytmp
SET nline=[%nline%]
::-------------------------------------
DIR /S /-C | FIND "bytes" | FIND /V "free" | FIND /N "File(s)" | FIND "%nline%" >%TEMP%\mytmp1
SET /P mainline=<%TEMP%\mytmp1
CALL SET size=%mainline:~29,15%
ECHO %size%
ENDLOCAL
PAUSE

ধন্যবাদ, এটি আমার জন্য 1 জিবি এর চেয়ে কম ফোল্ডারগুলির সাথে কাজ করে তবে উদাহরণস্বরূপ, আমার কাছে 3,976,317,115 বাইট (3.70 গিগাবাইট) ফোল্ডার রয়েছে এবং স্ক্রিপ্টটি আমার কাছে এই স্ট্রিং ") 932" ফিরিয়ে দেয়, আপনি জানেন কেন?
বিস্মিত

2

আমি অনুমান করি যে এটি কেবল তখনই কাজ করবে যদি ডিরেক্টরিটি মোটামুটি স্থিতিশীল থাকে এবং এর বিষয়বস্তু দুটি dir কমান্ডের প্রয়োগের মধ্যে পরিবর্তন না করে। এটি এড়ানোর জন্য এটি একটি কমান্ডের সাথে একত্রিত করার কোনও উপায় হতে পারে তবে এটি আমার উদ্দেশ্যে কাজ করেছিল (আমি সম্পূর্ণ তালিকা চাইনি; কেবল সংক্ষিপ্তসার চাই)।

গেটডিরসমারি.বাট স্ক্রিপ্ট:

@echo off
rem  get total number of lines from dir output
FOR /F "delims=" %%i IN ('dir /S %1 ^| find "asdfasdfasdf" /C /V') DO set lineCount=%%i
rem  dir summary is always last 3 lines; calculate starting line of summary info
set /a summaryStart="lineCount-3"
rem  now output just the last 3 lines
dir /S %1 | more +%summaryStart%

ব্যবহার:

গেটডিরসমারি.বাট সি: \ অস্থায়ী

আউটপুট:

 Total Files Listed:
          22 File(s)         63,600 bytes
           8 Dir(s)  104,350,330,880 bytes free

1

আমি du.exeআমার গিট বিতরণ সঙ্গে পেয়েছি । অন্য কোনও জায়গার উপরে মাইক্রোসফ্ট বা আনস্টিউটিলগুলি বর্ণিত হতে পারে

একবার আপনি নিজের পথে du.exe পেয়েছেন। এখানে আপনার fileSizes.bat:-)

@echo ___________
@echo DIRECTORIES
@for /D %%i in (*) do @CALL du.exe -hs "%%i"
@echo _____
@echo FILES
@for %%i in (*) do @CALL du.exe -hs "%%i"
@echo _____
@echo TOTAL
@du.exe -sh "%CD%"

___________
DIRECTORIES
37M     Alps-images
12M     testfolder
_____
FILES
765K    Dobbiaco.jpg
1.0K    testfile.txt
_____
TOTAL
58M    D:\pictures\sample

1

আমি মনে করি আপনার একমাত্র বিকল্পটি হ্রাস করা হবে (একটি অত্যন্ত সমর্থিত তৃতীয় পক্ষের সমাধান):

কমান্ড লাইন থেকে ফাইল / ডিরেক্টরি আকার পান

উইন্ডোজ সিএলআই অনিচ্ছাকৃতভাবে বেশ সীমাবদ্ধ, আপনি বিকল্পভাবে ইনস্টল করতে পারেন সাইগউইন করতে পারেন যা সেন্টিমিডির তুলনায় ব্যবহার করার স্বপ্ন। এটি আপনাকে পোর্ট করা ইউনিক্স সরঞ্জাম ডুতে অ্যাক্সেস দেবে যা উইন্ডোতে ডায়রুজের ভিত্তি।

দুঃখিত, নেটিভ ক্লাইমে আপনি চালাতে পারেন এমন একটি আদেশ দিয়ে আমি সরাসরি আপনার প্রশ্নের উত্তর দিতে পারিনি।


1
আপনার যদি কেবল প্রয়োজন হয় duতবে সাইগউইন হ'ল ওয়ে ওভারকিল। শুধু GnuWin32 সঙ্গে যান
জোয়

2
প্রকৃতপক্ষে এটি ওভারকিল, তবে এটি দুর্দান্ত। @ জোয়ে উপরে আপনার পোস্টের জন্য +1 (আক্ষরিকভাবে এটি করার জন্য রেপ পাওয়া যায় নি :()
ইলিজিয়ান

আমার বিনীত মতে সাইগউইন কারও পক্ষে কাজে লাগতে পারে তবে এটি ভয়ঙ্কর এবং ভয়ঙ্কর থেকে অনেক দূরে। তবে আমার ধারণা ইউনিক্স ব্যবহারকারীরা ওয়াইন সম্পর্কে একই কথা বলেছেন say
জোয়

1
"ওয়াইন" - কাঁপুনি, আমি আমার ডেভলপমেন্ট ল্যাপটপে সাইগউইন ব্যবহার করি কারণ ব্যাটারির আয়ু লিনাক্সের অধীনে ভীষণরকম হয় এবং এটিতে কোনও ভিএম চালানো সুবিধাজনক নয়। এটি কিছুটা সেট আপ করা দরকার, তবে সাইগউইন আমাদের মধ্যে যারা উইন্ডোজের নিক্স শেলটি মিস করেন তাদের পক্ষে উজ্জ্বল, ব্যক্তিগতভাবে আমি পাওয়ারশেল পছন্দ করি না যদিও আমাকে জিনউউইন চেক করতে হবে। ধন্যবাদ @ জোয়াই
ইলিজিয়ান

1

:: বেশ কয়েকটি লাইন পান যা দির আদেশ দেয় (/ -সি নম্বর বিভাজকগুলি মুছে ফেলার জন্য:।,) ["দিরের প্রতিটি লাইনের তৃতীয় কলামটি দেখার জন্য" "টোকেন = 3"]

FOR /F "tokens=3" %%a IN ('dir /-c "%folderpath%"') DO set /a i=!i!+1

পেনাল্টিমেট লাইনের সংখ্যা, যেখানে ফাইলগুলির যোগফলের বাইট সংখ্যা:

set /a line=%i%-1

অবশেষে পেনাল্টিমেট লাইনে বাইটের সংখ্যা পান - তৃতীয় কলাম:

set i=0
FOR /F "tokens=3" %%a IN ('dir /-c "%folderpath%"') DO (
  set /a i=!i!+1
  set bytes=%%a
  If !i!==%line% goto :size  
)
:size
echo %bytes%

এটি শব্দ শব্দের ব্যবহার না করায় এটিতে ভাষার সমস্যা হবে না।

সীমাবদ্ধতা:

  • কেবল 2 জিবি এরও কম ফোল্ডারের সাথে কাজ করে (সেন্টিমিডি 32 বিটের বেশি সংখ্যক পরিচালনা করে না)
  • অভ্যন্তরীণ ফোল্ডারগুলির বাইট সংখ্যা পড়েন না।

1

চেষ্টা করুন:

SET FOLDERSIZE=0
FOR /F "tokens=3" %A IN ('DIR "C:\Program Files" /a /-c /s ^| FINDSTR /C:" bytes" ^| FINDSTR /V /C:" bytes free"') DO SET FOLDERSIZE=%A

সি পরিবর্তন করুন: \ প্রোগ্রাম ফাইলগুলি যে কোনও ফোল্ডারে আপনি চান এবং তাতে ব্যাচ ফাইলে ব্যবহার করে% A% থেকে %% এ পরিবর্তন করুন

এটি সাব ফোল্ডার এবং লুকানো এবং সিস্টেম ফাইল সহ পুরো ফোল্ডারের আকার প্রদান করে এবং 2 জিবি-র বেশি ফোল্ডারগুলির সাথে কাজ করে

এটি স্ক্রিনে লিখতে পারে, তাই আপনি যদি না চান তবে আপনাকে একটি অন্তর্বর্তী ফাইল ব্যবহার করতে হবে।


1

নিম্নলিখিত লিপিটি প্রদত্ত ফোল্ডারের অধীনে প্রতিটি ফাইলের আকার আনতে এবং জমা করতে ব্যবহার করা যেতে পারে।
ফোল্ডার পাথটি %folder%এই স্ক্রিপ্টের আর্গুমেন্ট হিসাবে দেওয়া যেতে পারে ( %1)।
শেষ পর্যন্ত, ফলাফলগুলি প্যারামিটারে অনুষ্ঠিত হয়%filesize%

@echo off
SET count=1
SET foldersize=0
FOR /f "tokens=*" %%F IN ('dir /s/b %folder%') DO (call :calcAccSize "%%F")
echo %filesize%
GOTO :eof

:calcAccSize
 REM echo %count%:%1
 REM set /a count+=1
 set /a foldersize+=%~z1
 GOTO :eof

দ্রষ্টব্য: পদ্ধতিটি calcAccSizeফোল্ডারের সামগ্রীও মুদ্রণ করতে পারে (উপরের উদাহরণে মন্তব্য করা)


1

সুতরাং আপনি উভয় অনুরোধের জন্য এখানে মূলত আপনি যেভাবে জিজ্ঞাসা করেছেন তার সমাধান। এটি ফাইলের আকারের সীমা ছাড়াই মানব পাঠযোগ্যতা ফাইলসাইজ দেবে যা প্রত্যেকে অভিজ্ঞতা করছে। উইন ভিস্তা বা আরও নতুনের সাথে সামঞ্জস্যপূর্ণ। এক্সপি কেবলমাত্র রবোকপি ইনস্টল থাকলে উপলব্ধ। এই ব্যাচ ফাইলে কেবল একটি ফোল্ডার ফেলে দিন বা নীচে বর্ণিত আরও ভাল পদ্ধতিটি ব্যবহার করুন।

@echo off
setlocal enabledelayedexpansion
set "vSearch=Files :"

For %%i in (%*) do (
    set "vSearch=Files :"
    For /l %%M in (1,1,2) do ( 
        for /f "usebackq tokens=3,4 delims= " %%A in (`Robocopy "%%i" "%%i" /E /L /NP /NDL /NFL ^| find "!vSearch!"`) do (
            if /i "%%M"=="1" (
                set "filecount=%%A"
                set "vSearch=Bytes :"
            ) else (
                set "foldersize=%%A%%B"
            )
        )
    )
    echo Folder: %%~nxi FileCount: !filecount! Foldersize: !foldersize!
    REM remove the word "REM" from line below to output to txt file
    REM echo Folder: %%~nxi FileCount: !filecount! Foldersize: !foldersize!>>Folder_FileCountandSize.txt
)
pause

এই ব্যাচ ফাইলটি সহজেই আপনার সেন্ডটো ফোল্ডারে রেখে দিন। এটি আপনাকে ফোল্ডার বা ফোল্ডার নির্বাচন করতে ডান ক্লিক করতে, সেন্ডটো অপশনে ক্লিক করুন এবং তারপরে এই ব্যাচ ফাইলটি নির্বাচন করতে অনুমতি দেবে।

আপনার কম্পিউটারে সেন্ডটো ফোল্ডারটি সন্ধান করার সহজ উপায়টি হল সেন্টিমিডি খোলার পরে এই লাইনে অনুলিপি করুন।

explorer C:\Users\%username%\AppData\Roaming\Microsoft\Windows\SendTo


চিন্তিত যে কারও জন্য রবোকপি ফাইল সরিয়ে নেবে .. না। / l বিকল্পটি কেবল তালিকাভুক্ত করে। তদতিরিক্ত, রবোকপিটি তৃতীয় পক্ষ নয়, রবোকপি উইন্ডোতে ভিস্তা আপ, এক্সপি থেকে ডিফল্টরূপে উইন্ডোজ ইনস্টল করা আছে, আপনাকে এটি ইনস্টল করতে হবে।
জুলুর্ভেন

সংযোজনের জন্য ধন্যবাদ। এই থ্রেডটি এখনও মনোযোগ আকর্ষণ করে দেখে আনন্দিত ;-) রোবোকপি (দুর্দান্ত সরঞ্জাম!) ইনস্টল করতে কীভাবে যুক্ত করতে পারে।
এলদাড

0

আমি একই সমস্যা সমাধান। এই পৃষ্ঠায় কয়েকটি পদ্ধতি ধীর এবং কিছুগুলি বহুভাষার পরিবেশে সমস্যাযুক্ত (সমস্ত ধরুন ইংরাজী)। আমি সেন্টিমিডিতে ভিবিএসক্রিপ্ট ব্যবহার করে সাধারণ কাজটি দেখতে পেয়েছি। এটি W2012R2 এবং ডাব্লু 7-তে পরীক্ষা করা হয়।

>%TEMP%\_SFSTMP$.VBS ECHO/Set objFSO = CreateObject("Scripting.FileSystemObject"):Set objFolder = objFSO.GetFolder(%1):WScript.Echo objFolder.Size
FOR /F %%? IN ('CSCRIPT //NOLOGO %TEMP%\_SFSTMP$.VBS') DO (SET "S_=%%?"&&(DEL %TEMP%\_SFSTMP$.VBS))

এটি পরিবেশ পরিবর্তনশীল S_ সেট করে। আপনি অবশ্যই অবশ্যই ফলাফল প্রদর্শন করতে শেষ লাইনটি উদাহরণস্বরূপ পরিবর্তন করতে পারেন

FOR /F %%? IN ('CSCRIPT //NOLOGO %TEMP%\_SFSTMP$.VBS') DO (ECHO "Size of %1 is %%?"&&(DEL %TEMP%\_SFSTMP$.VBS))

আপনি এটি সাবরুটাইন বা স্ট্যান্ডলোন সেমিডি হিসাবে ব্যবহার করতে পারেন। প্যারামিটার উদ্ধৃত বাক্সে পরীক্ষিত ফোল্ডারের নাম।


-3

মোট আকারের পাওয়ার জন্য সহজ পদ্ধতিটি পাওয়ারশেল, তবে এখনও সীমাবদ্ধ যে 260 টিরও বেশি অক্ষরের চেয়ে বেশি প্যাথের নামগুলি মোটের অন্তর্ভুক্ত নয়


2
এটি একটি খারাপ এবং দরিদ্র উত্তর। কমান্ড লাইন বা কোড কি?
তাতারিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.