Якщо ви хочете це зробити 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. Будьте дуже обережні з тими, оскільки різні речі можуть це порушити.
Поширені помилки:
Використання find /c /vта спробу знайти щось, що ніколи не входить до імені файлу, наприклад ::. Не буде Робота. Надійно. Якщо у вікні консолі встановлено растрові шрифти, ви можете отримати ці комбінації символів. Я, наприклад, можу включати символи в ім'я файлу, наприклад :, ?і т. Д. У їх повнорозмірні варіанти, які потім перетворяться на їхні звичайні аналоги ASCII, які порушують це. Якщо вам потрібна точна кількість, тоді не намагайтеся цього робити.
Використання find /cта спробу знайти щось, що завжди входить до імені файлу. Очевидно, що точка ( .) - це поганий вибір. Ще одна відповідь підказує
dir /a-d | find /c ":"
який передбачає декілька речей про місцевість користувача, не всі з яких гарантовано є правдивими (я залишив коментар, де детально описуються проблеми) і повертає один результат занадто багато.
Як правило, ви хочете використовувати, findна dir /bякому вирізаєте всі речі, що не належать до імені файлу, і таким чином уникаєте помилок забору.
Таким елегантним варіантом буде:
dir /b /a-d | find /c /v ""
який спочатку виведе всі назви файлів, по одному рядку. А потім порахуйте всі рядки цього виводу, які не порожні. Оскільки ім’я файлу не може бути порожнім (якщо я чогось не пропускаю, але Unicode не виправить це згідно моїх тестів).