Bunu yapmak istiyorsanız cmd
, aşağıdakiler yapmanın en önemsiz yoludur:
set count=0 & for %x in (*) do @(set /a count+=1 >nul)
echo %count%
Bu komut satırını farz ediyor. Bir toplu iş dosyasında yapardın
@echo off
setlocal enableextensions
set count=0
for %%x in (*) do set /a count+=1
echo %count%
endlocal
hangi işler biraz daha güzel. >nul
Bir toplu iş içinde bırakabilirsiniz , çünkü set /a
bir toplu iş dosyasından çalıştırıldığında sonucu görüntülemez - doğrudan komut satırından çıkar. Ayrıca, döngü içindeki %
işaret for
iki katına çıkarılmalıdır.
İnsanların şık numaralar denediği birkaç örnek gördüm find /c
. Bunlara çok dikkat edin, çünkü çeşitli şeyler bunu kırabilir.
Yaygın hatalar:
Kullanımı find /c /v
ve asla bir dosya adına dahil edilmemiş bir şey bulmayı deneyin ::
. Alışkanlık. İş. Güvenilir. Konsol penceresi raster yazı tiplerine ayarlandığında, bu karakter kombinasyonunu elde edebilirsiniz . Ben gibi bir dosya adı karakterleri içerebilir :
, ?
vb sonra bu kıracak normal ASCII muadillerine dönüştürülür alacak örneğin tam genişlikli varyantları, içinde. Doğru bir sayıma ihtiyacınız varsa, o zaman bunu denemeyin.
Kullanarak her zaman bir dosya adına dahil olan bir find /c
şeyi bulmayı deneyin . Açıkçası nokta ( ) kötü bir seçimdir. Başka bir cevap önerir.
dir /a-d | find /c ":"
kullanıcının yerel ayarları hakkında bir şeyler varsayarsak, bunların hepsinin gerçek olacağı garanti edilmez (oradaki sorunları ayrıntılandıran bir yorum bıraktım) ve çok fazla sonuç döndürdü.
Genellikle, kullanmak istediğiniz find
üzerindeki dir /b
kesikler uzakta olmayan tüm dosya şeyler ve kaçınır bu şekilde hataları fencepost hangi.
Yani şık değişken:
dir /b /a-d | find /c /v ""
ilk önce tüm dosya isimlerini, her biri bir satır çıktısını alacak. Sonra boş olmayan tüm çıktıları sayın. Dosya adı boş olamayacağından (bir şey eksik olmadıkça, ancak Unicode testlerime göre bunu açmayacak).