Если Вы хотите сделать это с 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 не собьет это с толку согласно моим тестам).
Взгляните на этот документ об оптимизации для работы многоядерных систем
Существует "куча" материала там, всего от того, как структурировать код для наполнения как numactl для управления привязкой процессора.