Jika Anda ingin melakukannya cmd
, maka berikut ini adalah cara sepele untuk melakukannya:
set count=0 & for %x in (*) do @(set /a count+=1 >nul)
echo %count%
Itu mengasumsikan baris perintah. Dalam file batch yang akan Anda lakukan
@echo off
setlocal enableextensions
set count=0
for %%x in (*) do set /a count+=1
echo %count%
endlocal
yang melakukan hal-hal yang sedikit lebih baik. Anda bisa menjatuhkan >nul
batch, karena set /a
tidak akan menampilkan hasilnya jika dijalankan dari file batch — itu langsung dari baris perintah. Selanjutnya %
tanda dalam for
loop harus digandakan.
Saya telah melihat beberapa contoh di mana orang mencoba trik yang bagus find /c
. Berhati - hatilah dengan itu, karena berbagai hal dapat merusak ini.
Kesalahan Umum:
Menggunakan find /c /v
dan mencoba menemukan sesuatu yang tidak pernah dimasukkan dalam nama file, seperti ::
. Biasa. Kerja. Andal. Ketika jendela konsol diatur ke font raster maka Anda bisa mendapatkan kombinasi karakter tersebut. Saya dapat mencakup karakter dalam nama file seperti :
, ?
, dll dalam varian full-width mereka misalnya, yang akan kemudian diubah ke rekan-rekan ASCII normal yang akan istirahat ini. Jika Anda membutuhkan hitungan yang akurat, maka jangan coba ini.
Menggunakan find /c
dan mencoba menemukan sesuatu yang selalu termasuk dalam nama file. Jelas titik ( .
) adalah pilihan yang buruk. Jawaban lain menyarankan
dir /a-d | find /c ":"
yang mengasumsikan beberapa hal tentang lokal pengguna, tidak semuanya dijamin benar (saya telah meninggalkan komentar yang merinci masalah di sana) dan mengembalikan satu hasil terlalu banyak.
Umumnya, Anda ingin menggunakan find
di dir /b
mana pemotongan segala hal non-nama file dan menghindari fencepost kesalahan seperti itu.
Jadi varian elegannya adalah:
dir /b /a-d | find /c /v ""
yang pertama akan menampilkan semua nama file, masing-masing satu baris. Dan kemudian hitung semua baris output yang tidak kosong. Karena nama file tidak boleh kosong (kecuali saya kehilangan sesuatu, tetapi Unicode tidak akan trip ini menurut tes saya).