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).
dir /b /a-d | find /c /v ""
%count%
diperluas pada waktu parse.Tanyakan dan kamu akan menerima: http://technet.microsoft.com/en-us/library/ee692796.aspx
FYI .. Saya mencari "file count powershell" di Google.
sumber
(Get-ChildItem -recurse -filter "*.ps1").Count
Sebuah kata peringatan tentang penggunaan PowerShell untuk operasi file sederhana seperti ini - ini sangat lambat dibandingkan dengan cmd.exe, terutama melalui koneksi jaringan atau ketika ada ribuan file di direktori. Lihat posting forum ini untuk info lebih lanjut.
sumber
dir
memberi Anda jumlah total file di bagian bawah.sumber
dir > file
.. ahh aku rindu POSIXdir > file
tidak bekerja di Windows? Pengarahan output tidak benar-benar ajaib, Anda tahu.dir | grep (something)
untuk menghindari penulisan lambat di layar yang memperlambat segalanya (dan meminimalkan semuanya).Metode tercepat yang saya temukan adalah menjalankan yang berikut di konsol PS.
di mana $ path adalah jalur lokal atau saham UNC.
sumber
cukup hitung baris dari keluaran dir / B (termasuk direktori):
dir /B | find /c /v "~~~"
untuk hanya menghitung file (tanpa dir):
dir /A-D /B | find /c /v "~~~"
sumber
Menemukan ini di internet:
Saya diuji dan tampaknya berhasil.
sumber
dir
perintah termasuk baris dengan titik dua di dalamnya yang bukan file. (2) Ini bergantung pada format waktu untuk menyertakan titik dua, yang tidak harus seperti itu. (3) Itu bergantung pada format angka tidak termasuk titik dua, yang juga tidak harus begitu. Selain itu, membaca file di sini tidak perlu dan tidak akan berfungsi jika Anda tidak memiliki akses tulis — ide yang buruk.Hanya peringatan bagi mereka yang mungkin menggunakan jawaban PowerShell Trevoke di atas ( prompt perintah Windows: cara mendapatkan jumlah semua file di direktori saat ini? ): Dengan desain, menggemakan properti Hitung koleksi yang dikembalikan oleh Get-ChildItem dapat memberikan hasil yang menyesatkan jika nilainya 1 atau 0. Ini karena properti Count hanya tersedia pada array. Jika kurang dari 2 item dikembalikan oleh Get-ChildItem, hasilnya adalah skalar, dan .Count tidak mengembalikan apa pun. Untuk menyiasati ini, secara eksplisit melemparkannya ke dalam array, misalnya, @ (Get-ChildItem C: \ Scripts) .Count.
Untuk info lebih lanjut, lihat http://connect.microsoft.com/PowerShell/feedback/details/354672/get-childitem-count-problem-with-one-file atau http://www.vistax64.com/powershell/266379 -get-childitem-count-not-working-one-file.html .
sumber
dir
mengembalikan jumlah file dan direktori di bagian bawahsumber
Tentu saja akan berhasil
Tanpa menginstal sesuatu di server tetapi memiliki PowerShell di workstation Anda, Anda bisa melakukannya:
perintah itu akan memberi Anda semua file (termasuk sistem dan tersembunyi) dan seperti yang disebutkan sebelumnya jika PowerShell ada di mesin, Anda dapat dengan mudah
Perhatikan bahwa jika Anda tidak menyertakan . Anda akan mendapatkan hitungan semua file dan semua direktori. Anda tidak akan menyertakan file tersembunyi dan sistem yang perlu Anda tambahkan-paksa untuk menghitung semuanya
sumber
Jika saya hanya perlu ini sekali saya hanya akan menggunakan dir, kalau tidak saya akan mempertimbangkan untuk menggulir sendiri, mungkin sebagai aplikasi C # karena itulah yang saya paling akrab dengan (meskipun VBScript atau PowerShell juga akan layak).
(Omong-omong - ini bukan DOS jika Anda menggunakan cmd.exe)
sumber
Saya yakin Anda bisa menggunakan attrib untuk mendapatkan jumlah file:
Ini akan membuat file bernama filecount.txt di direktori saat ini dengan jumlah file dan folder di direktori saat ini (termasuk file yang baru dibuat). Anda dapat mengubah
untuk
untuk mendapatkan jumlah file dari direktori tertentu. Hapus opsi "/ D" jika Anda tidak ingin menghitung folder. Opsi "/ s" memproses file di semua direktori di jalur yang ditentukan. Jadi hapus jika Anda hanya ingin file di jalur yang ditentukan dan tidak ingin memasukkan file dalam sub folder.
Jadi misalnya jika Anda ingin mengetahui berapa banyak file di drive C: \ Anda dan bukan subfolder, Anda akan menggunakan perintah:
sumber
Saya melakukan sesuatu yang serupa dan ini berfungsi dengan sejumlah file secara instan.
sumber
find
bukanlah ide yang baik. Lihat jawaban yang diterima untuk detailnya.