উইন্ডোজ কমান্ড প্রম্পট: বর্তমান ডিরেক্টরিতে সমস্ত ফাইলের গণনা কীভাবে পাবেন?


24

cmd.exeবর্তমান ডিরেক্টরিতে ফাইল সংখ্যা জানতে আপনি কোন আদেশ ব্যবহার করবেন ?

এখানে কি পাওয়ারশেল বিকল্প আছে?

আপডেট : আমি এড়াতে আশা করছিলাম dir, কারণ আমি জানি বর্তমান ডিরেক্টরিতে 10,000+ ফাইল রয়েছে। সিএমডি উইন্ডোতে গণনা আউটপুট এড়াতে চেয়েছিলেন। ধন্যবাদ!

উত্তর:


27

যদি আপনি এটি দিয়ে করতে চান cmd, তবে নিম্নলিখিতটি করার জন্য তুচ্ছ উপায় হল:

set count=0 & for %x in (*) do @(set /a count+=1 >nul)
echo %count%

এটি কমান্ড লাইন ধরে নিচ্ছে। একটি ব্যাচ ফাইল আপনি করতে হবে

@echo off
setlocal enableextensions
set count=0
for %%x in (*) do set /a count+=1
echo %count%
endlocal

যা কিছুটা ভাল কাজ করে। আপনি >nulএকটি ব্যাচে ফেলে দিতে পারেন , যেহেতু set /aকোনও ব্যাচ ফাইল থেকে চালানো হলে ফলাফলটি প্রদর্শিত হবে না — এটি কমান্ড লাইন থেকে সরাসরি করে। তবু লুপের %সাইনটি forদ্বিগুণ করতে হবে।

আমি বেশ কয়েকটি উদাহরণ দেখেছি যেখানে লোকেরা নিফটির কৌশল চেষ্টা করে find /cহতে খুব ঐ সতর্ক থাকুন, যেমন বিভিন্ন জিনিষ এই ভেঙ্গে দিতে পারে।

সাধারণ ভুল:

  1. find /c /vকোনও ফাইলের নামের সাথে কখনই অন্তর্ভুক্ত নয় এমন কোনও জিনিস ব্যবহার করে অনুসন্ধান করার চেষ্টা করুন ::। করা হবে না। ওয়ার্ক। নির্ভরযোগ্যভাবে। কনসোল উইন্ডোটি রাস্টার ফন্টে সেট করা থাকলে আপনি সেই অক্ষর সংমিশ্রণটি পেতে পারেন । আমি যেমন একটি ফাইলের নাম অক্ষর অন্তর্ভুক্ত করতে পারে :, ?ইত্যাদি উদাহরণস্বরূপ তাদের পূর্ণ-প্রস্থের রূপগুলো, যা তাদের স্বাভাবিক হওয়া ASCII প্রতিরূপ যা এই ভঙ্গ করবে রূপান্তরিত হবে হবে। আপনার যদি একটি সঠিক গণনা প্রয়োজন, তবে এটি চেষ্টা করবেন না।

  2. সর্বদা একটি ফাইলের নামের অন্তর্ভুক্ত find /cএমন কিছু ব্যবহার করে চেষ্টা করুন । স্পষ্টতই ডট ( ) একটি খারাপ পছন্দ is আর একটি উত্তর প্রস্তাব দেয়.

    dir /a-d | find /c ":"

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

সাধারণত, আপনি ব্যবহার করতে চান যার findউপর dir /bনন-ফাইলনামের সমস্ত জিনিস কেটে দেয় এবং ফেনসপোস্ট ত্রুটিগুলি এড়ানো যায়।

সুতরাং মার্জিত রূপটি হবে:

dir /b /a-d | find /c /v ""

যা প্রথমে সমস্ত ফাইলের নাম, প্রতিটি এক লাইন আউটপুট দেয়। এবং তারপরে আউটপুটটির সমস্ত লাইন গণনা করুন যা খালি নয়। যেহেতু ফাইলটির নাম খালি থাকতে পারে না (যদি না আমি কিছু মিস করছি তবে ইউনিকোড আমার পরীক্ষাগুলি অনুসারে এটিকে ট্রিপ করবে না)।


1
+1 ঠিক এটিই আমি খুঁজছিলাম। ধন্যবাদ জেআর!
পি.কম্পবেল

1 ম সংস্করণটি সমস্ত এক লাইন তৈরি করতে ছোট খামচি: (গণনা = 0 সেট করুন এবং% x এর জন্য (*) do @ (সেট / একটি গণনা + = 1> নুল)) এবং & প্রতিধ্বনি% গণনা%
জেসন ম্যাসি

+1 এর জন্যdir /b /a-d | find /c /v ""
আরভো বোয়েন

কয়েক মিলিয়ন ফাইল থাকা অবস্থায় এই সমাধানটি ভাল কাজ করে না। এটি "চিরকালের জন্য" চালায় - নীচে একটি আরও ভাল সমাধান পোস্ট করা হয় যা পিএস এবং [সিস্টেম.আইও.ডাইরেক্টরি] :: গেটফিলস ($ পথ) ব্যবহার করে "সেকেন্ডে" চালায়। অ্যাকাউন্ট
রিপভ্লান

@ জেসন, %count%পার্স সময় ব্যতীত যেহেতু সম্ভবত এটি ব্যর্থ হবে ।
জোয়ি

17

জিজ্ঞাসা করুন এবং আপনি পাবেন: http://technet.microsoft.com/en-us/library/ee692796.aspx

একটি ফোল্ডারে আইটেমের সংখ্যা গণনা করা হচ্ছে

ঠিক আছে, আপনি কী জানেন: মনে হচ্ছে সূর্য অবশেষে বেরিয়ে আসছে, যার অর্থ আমাদের প্রায় সময় পার হয়ে গেছে। যাইহোক, আমরা এর আগে, আসুন আপনাকে গেট-চাইল্ড আইটেম সেমিডলেট দিয়ে একটি শেষ ছোট কৌশল দেখাব। কখনও কখনও আপনার ফোল্ডারে থাকা ফাইলগুলি সম্পর্কে সত্যিকার অর্থে খুব বেশি কিছু জানতে হবে না; আপনার সত্যিকারের যা জানা দরকার তা হ'ল নির্দিষ্ট ফোল্ডারে কতগুলি ফাইল (যদি থাকে) পাওয়া যায় can আপনি কীভাবে দ্রুত কোনও ফোল্ডারে ফাইল সংখ্যা গণনা করতে পারেন তা এখানে:

(Get-ChildItem C:\Scripts).Count

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

এবং নিশ্চিত যে, গেট-চাইল্ড আইটেম কল করার সময় আপনি একটি ফিল্টার অন্তর্ভুক্ত করতে পারেন। ফোল্ডার সি: \ স্ক্রিপ্টগুলিতে কতগুলি .PS1 ফাইল রয়েছে তা জানতে হবে? ঠিক আছে-doke:

(Get-ChildItem C:\Scripts -filter "*.ps1").Count

এফওয়াইআই .. আমি "পাওয়ারশেল কাউন্ট ফাইলগুলি" গগলড করেছি।


1
দ্বিতীয় উদাহরণ হিসাবে গণনাটি আসলে ফাইলগুলি গণনা করতে আপনাকে একটি ফাইলস্পেক যুক্ত করতে হবে
জিম বি

3
কেবল পরিষ্কার হয়ে উঠুন (গেট-চাইল্ড আইটেম সি: crip স্ক্রিপ্টস)। অ্যাকাউন্ট কোনও ফোল্ডারে ফাইলের সংখ্যা ফিরিয়ে দেবে না এটি কোনও ফোল্ডারে ওবিজেইসিটির সংখ্যা প্রদান করবে। ফাইলগুলি গণনা করার জন্য আপনাকে অবশ্যই একটি ফিল্টার বা ফাইলের স্পেসিফিকেশন যুক্ত করতে হবে। আপনার সি এর মূল থেকে হিসাব করুন (গি।)। গননা করুন এবং দির: ড্রাইভ করুন এবং সংখ্যার পার্থক্যটি দেখুন
জিম বি

4
একই লিঙ্কটি থেকে, আপনি যদি সাব-ফোল্ডারে ফাইলগুলি গণনা করতে চান (Get-ChildItem -recurse -filter "*.ps1").Count
তবেও

1
ঠিক একটি ফাইল থাকলে কাজ করে না, এই জাতীয় কিছু করতে হবে: $ filecount = @ (get-childitem $ ডিরেক্টরি-ফিল্টার " ")। অ্যাকাউন্ট। আমি অন্য কোথাও যা পড়েছি তা থেকে, যদি একটি ফাইল থাকে তবে এটি অ্যারে নয়।
নিলওয়াল্টার্স 21

@ নিলওয়াল্টার্স: পাওয়ারশেল ভি 3 পর্যন্ত এটি সঠিক ছিল। তার পর থেকে কিছু যায় আসে না।
জোয়

8
dir /a-d | find "File(s)"

এই জাতীয় সরল অপারেশনের জন্য পাওয়ারশেল ব্যবহার সম্পর্কে সতর্কতার একটি শব্দ - এটি cmd.exe এর সাথে তুলনা করে অবিশ্বাস্যভাবে ধীর হয়, বিশেষত নেটওয়ার্ক সংযোগের ওপরে বা ডিরেক্টরিতে যখন কয়েক হাজার ফাইল থাকে files দেখুন এই ফোরামে পোস্ট আরও তথ্যের জন্য।


আপনার সিস্টেমটি যদি ইংরেজির চেয়ে আলাদা ভাষায় থাকে তবে আপনার এতে সমস্যা হবে।
ওয়ালিকু

7

dir নীচে মোট ফাইল গণনা দেয়।


1
1 আপ সাথী, আপনি আমাকে এই মারধর করেছেন :)
dyasny

2
এবং সমস্ত লাইনটি সেমিডি উইন্ডোতে স্ক্রোল করে দেখার খরচ এড়াতে ... এটি হ্রাস করুন, এটি খুব বেশি দ্রুত কাজ করবে।
gbjbaanb

1
বা ঠিক dir > file..
আহ

1
@ ফ্লোরেনজ: কেন dir > fileউইন্ডোজে কাজ করা উচিত নয়? আউটপুট পুনর্নির্দেশ ঠিক যাদু নয়, আপনি জানেন।
জোয়

1
@ জোহানেস: বাস্তবে এটি কাজ করে! আমি পসিক্স মিস করি কারণ আপনি dir | grep (something)ধীরে ধীরে স্ক্রিন রাইটিং যাতে জিনিসগুলিকে ধীর করে দেয় (এবং এটি পুরোপুরি হ্রাস করে) এড়াতে "ঠিক" করতে পারতেন ।
lorenzog

7

আমি যে দ্রুততম পদ্ধতিটি খুঁজে পেয়েছি তা হল পিএস কনসোলে নিম্নলিখিতটি চালানো।

[System.IO.Directory]::GetFiles($path).Count

যেখানে $ পথটি একটি স্থানীয় পাথ বা ইউএনসির ভাগ।


2
ঐ দিকে তাকান. প্রশ্নটি জিজ্ঞাসা করার প্রায় 7.5 বছর পরে একটি কার্যকর অসাধারণ উত্তর হাজির!
পি.কম্পবেল

আমার জন্য প্রায় 10 সেকেন্ডের মধ্যে গণনা ফিরিয়ে দিতে 2.1 মিলিয়নেরও বেশি ফাইল সহ একটি ডিরেক্টরিতে ভার্চুয়াল সার্ভারে কাজ করেছেন। এটি অবশ্যই সঠিক উত্তর হওয়া উচিত।
ড্যারেন এমবি

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

3

dir / B আউটপুট থেকে কেবল লাইনগুলি গণনা করুন (ডিরেক্টরিগুলি অন্তর্ভুক্ত):
dir /B | find /c /v "~~~"

কেবল ফাইল গণনা করার জন্য (কোনও ডায়ার ছাড়াই):
dir /A-D /B | find /c /v "~~~"


এটি মোট হিসাবে ফাইল এবং ডিরেক্টরি গণনা প্রদান করে
TheCleaner

2

পাওয়া এই নেট:

dir /a-d | find /c ":" > NUMfiles.###
set /p count=<NUMfiles.###
echo %count%

আমি পরীক্ষা করেছি এবং মনে হচ্ছে এটি কাজ করে।


"মনে হচ্ছে" এখানে সঠিক শব্দ। (1) এই বন্ধ কোনো ক্ষেত্রে এক করে, যেহেতু হয় dirকমান্ড এটি একটি কোলন যা দিয়ে একটি লাইন অন্তর্ভুক্ত না একটি ফাইল। (২) এটি কোনও কোলন অন্তর্ভুক্ত করার জন্য সময় বিন্যাসের উপর নির্ভর করে, যা অগত্যা তা হওয়ার দরকার নেই। (3) ইহা নম্বর বিন্যাস উপর নির্ভর না একটি কোলন, যা অগত্যা তাই হতে হবে তা নয় সহ। তদ্ব্যতীত, এখানে কোনও ফাইলের মধ্য দিয়ে যাওয়া অপ্রয়োজনীয় এবং আপনার যদি লেখার অ্যাক্সেস না থাকে তবে খারাপ ধারণা work
জোয়

"NUMfiles। ###" ফাইল তৈরি না করে কীভাবে এটি তৈরি করবেন?
নিকউনুশেখ

2

যারা উপরের দিকে ট্র্যাভোকের পাওয়ারশেল উত্তর ব্যবহার করতে পারে তাদের জন্য কেবল একটি সতর্কতা ( উইন্ডোজ কমান্ড প্রম্পট: বর্তমান ডিরেক্টরিতে সমস্ত ফাইলের গণনা কীভাবে পাবেন? ): ডিজাইন করে গেট-চাইল্ড আইটেম দ্বারা প্রাপ্ত সংগ্রহের কাউন্টের সম্পত্তি প্রতিধ্বনিত করা বিভ্রান্তিকর ফলাফল দিতে পারে যদি মান 1 বা 0 হয় তবে এটি কারণ গণনা সম্পত্তি কেবল অ্যারেগুলিতে উপলব্ধ। গেট-চাইল্ড আইটেমের মাধ্যমে যদি 2 টিরও কম আইটেম ফিরে আসে তবে ফলাফলটি স্কেলার হয় এবং অ্যাকাউন্টটি কিছুই দেয় না। এটি পেতে, পরিষ্কারভাবে এটিটিকে একটি অ্যারেতে ফেলে দিন, যেমন, @ (গেট-চাইল্ড আইটেম সি: crip স্ক্রিপ্টস)। অ্যাকাউন্ট ount

আরও তথ্যের জন্য, http://connect.microsoft.com/PowerShell/feedback/details/354672/get-childitem-count-problem-with-one-file বা http://www.vistax64.com/powershell/266379 দেখুন এক-ফাইল-এইচটিএমএল-বাজেট-চাইল্ডাইটেম-গণনা-নয়


0

dir নীচে ফাইল এবং ডায়ারের সংখ্যা প্রদান করে


0

ডিআইআর অবশ্যই কাজ করবে

সার্ভারে কিছু ইনস্টল না করে তবে আপনার ওয়ার্কস্টেশনটিতে পাওয়ারশেল থাকা আপনি করতে পারেন:

(gwmi -computer theserver -query "select *from cim_datafile where path = '\\'").count

এই কমান্ডটি আপনাকে সমস্ত ফাইল (সিস্টেম এবং লুকানো অন্তর্ভুক্ত) দেবে এবং পূর্বে উল্লিখিত হয়েছে যে পাওয়ারশেলটি মেশিনে থাকলে আপনি কেবল পারেন

(GCI c:\*.*).count

আপনি যদি অন্তর্ভুক্ত না করেন তবে নোট করুন আপনি সমস্ত ফাইল এবং সমস্ত ডিরেক্টরি একটি গণনা পাবেন। আপনি সমস্ত লুকিয়ে থাকা এবং সিস্টেম ফাইলগুলিকে অন্তর্ভুক্ত করবেন না - এগুলি সমস্ত গণনা করার জন্য আপনার প্রয়োজন add


0

আমি কেবল এটির প্রয়োজন হলে আমি কেবল দির ব্যবহার করতাম, না হলে আমি নিজের নিজস্ব ঘূর্ণায়মান বিবেচনা করতাম, সম্ভবত একটি সি # অ্যাপ হিসাবে কারণ এটিই আমি সবচেয়ে বেশি পরিচিত হব (যদিও ভিবিএস স্ক্রিপ্ট বা পাওয়ারশেলও কার্যকর হবে)।

(যাইহোক - আপনি যদি cmd.exe ব্যবহার করছেন তবে ডস নয়)


0

আমি বিশ্বাস করি আপনি ফাইল গণনা পেতে বৈশিষ্ট্য ব্যবহার করতে পারেন:

attrib.exe /s /D *.*|find /c /v "" >> filecount.txt

এটি বর্তমান ডিরেক্টরিতে ফাইল ফাইল এবং সংখ্যার (নতুন তৈরি হওয়া ফাইল সহ) ফোল্ডারগুলির সংখ্যা সহ ফাইল ডিরেক্টরিতে ফাইলকাউন্ট.সেক্সট নামে একটি ফাইল তৈরি করবে। আপনি পরিবর্তন করতে পারেন

*.*

থেকে

<full_path>\*.*

একটি নির্দিষ্ট ডিরেক্টরি ফাইল গণনা পেতে। আপনি যদি ফোল্ডারগুলি গণনা করতে না চান তবে "/ ডি" বিকল্পটি সরান। "/ গুলি" বিকল্পটি সুনির্দিষ্ট পথে সমস্ত ডিরেক্টরিতে ফাইল প্রসেস করে। সুতরাং যদি আপনি কেবল নির্দিষ্ট পথে ফাইল চান এবং সাব ফোল্ডারে ফাইল অন্তর্ভুক্ত না করতে চান তবে এটি সরিয়ে দিন।

সুতরাং উদাহরণস্বরূপ আপনি যদি নিজের সি: \ ড্রাইভ এবং কোনও সাব-ফোল্ডার না থেকে কমান্ডটি ব্যবহার করতে চান তবে কতগুলি ফাইল রয়েছে তা জানতে চান:

attrib.exe C:\*.* | find /c /v "" >> filecount.txt

ফলাফলের জন্য ফাইল ব্যবহার করা বুদ্ধিমান ধারণা নয়। বর্তমান ডিরেক্টরি যদি আপনার দ্বারা লিখিত না হয় তবে আপনি কী করবেন?
জোয়

@ জোহনেস আপনি যে ডিরেক্টরিতে লেখার অ্যাক্সেস আছে তা ব্যবহার করুন? যেমন নল সি আউটপুট: \ MyWritableDir \ filecount.txt
smoak

এখনও অপ্রয়োজনীয়
জোয়

-2

আমি অনুরূপ কিছু করছি এবং এটি তত্ক্ষণাত্ সংখ্যক ফাইলের সাথে কাজ করে।

Setlocal enabledelayedexpansion

Dir /A | find "File(s)" >tmp

For /F "tokens=1" %%i in (tmp) do set n=%%i

Del tmp

If !n! GEQ 10 echo Too many files in directory.

ইতিমধ্যে প্রচুর (ভাল) নবাব দিয়ে 6 বছরের পুরানো প্রশ্নের কেন অকেজো (এবং ত্রুটিযুক্ত) উত্তর পোস্ট করবেন?
ম্যাসিমো

@ মাসিমো কারণ আমি উপরের উত্তরগুলিতে সন্তুষ্ট নই এবং আরও মার্জিত সমাধান চাইছি। কেন জ্ঞানের সন্ধানের পথে দাঁড়িয়ে যা যা সময়ের সাথে সীমাবদ্ধ নয়?
অ্যারন লো 30

Urgh! উত্তরগুলি ভয়ঙ্কর দেখাচ্ছে look উত্তরে সমাধান সম্পাদিত। আমাকে ধন্যবাদ দেওয়ার দরকার নেই অন্যকে সাহায্য করার জন্য আমি নেতিবাচক প্রতিবেদন পছন্দ করি :
অ্যারন লো

কিছু আউটপুট ধরে রাখার জন্য কোনও টেম্প ফাইল ব্যবহার করার সত্যিই কোনও কারণ নেই; এছাড়াও, ব্যবহার findকরা ভাল ধারণা নয়। বিশদ জন্য গৃহীত উত্তর দেখুন।
ম্যাসিমো

@ মাসিমো আমি আপনার প্রশ্নের উত্তর দিয়েছি। আপনি আমার একটি উত্তর .ণী। আপনি যদি টেম্প ফাইলটি ব্যবহার না করে কীভাবে আমাকে দেখান আমি তা প্রশংসা করি। আমি ইতিমধ্যে সমস্ত উত্তর পড়েছি যার কারণে আমি নিজের পোস্ট করেছি। আপনি ধরে নিচ্ছেন যে কোনও উত্তর গৃহীত হয়েছে যে নতুন উত্তর পাওয়া যাবে না। এটি কেবল ওপি-র জন্য নয়, একই সমাধানের সন্ধানকারী সকলের জন্য।
অ্যারন লো 0
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.