यदि आप इसे करना चाहते हैं 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
। Be बहुत उन के साथ सावधान, के रूप में विभिन्न बातें इस तोड़ सकते हैं।
साधारण गलती:
find /c /v
किसी ऐसी चीज़ का उपयोग करना और खोजना जो कभी फ़ाइल नाम में शामिल नहीं होती है, जैसे कि ::
। नहीं होगा। काम। मज़बूती से। जब कंसोल विंडो को रैस्टर फोंट पर सेट किया जाता है तो आप उन कैरेक्टर कॉम्बिनेशन को प्राप्त कर सकते हैं। मैं इस तरह के रूप में एक फ़ाइल के नाम में वर्ण हो सकते हैं :
, ?
आदि उदाहरण के लिए उनके पूर्ण-चौड़ाई वेरिएंट है, जो तब अपने सामान्य ASCII समकक्षों जो इस टूट जाएगा करने के लिए परिवर्तित हो जाएगी में। यदि आपको एक सटीक गणना की आवश्यकता है, तो यह कोशिश न करें।
find /c
किसी ऐसी चीज़ का उपयोग करना और खोजने की कोशिश करना जो हमेशा फ़ाइल नाम में शामिल हो। जाहिर है डॉट ( .
) एक खराब विकल्प है। एक और जवाब बताता है
dir /a-d | find /c ":"
जो उपयोगकर्ता के स्थान के बारे में कई बातों को मानता है, जिनमें से सभी को सच होने की गारंटी नहीं है (मैंने वहां समस्याओं का विवरण देते हुए एक टिप्पणी छोड़ दी है) और एक परिणाम बहुत अधिक देता है।
आम तौर पर, आप उस find
पर उपयोग करना चाहते हैं dir /b
जो सभी गैर-फ़ाइल नाम के सामान को काट देता है और इस तरह से बाड़ की त्रुटियों से बचा जाता है।
तो सुरुचिपूर्ण संस्करण होगा:
dir /b /a-d | find /c /v ""
जो पहले सभी फ़ाइल नामों को आउटपुट करेगा, एक-एक लाइन। और फिर उस आउटपुट की सभी पंक्तियों को गिनें जो खाली नहीं हैं। चूंकि फ़ाइल नाम खाली नहीं हो सकता (जब तक कि मुझे कुछ याद नहीं है, लेकिन यूनिकोड मेरे परीक्षणों के अनुसार इस यात्रा नहीं करेगा)।