Якщо ви хочете це зробити 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 не виправить це згідно моїх тестів).