hoster имеет
Они
Таким образом, Вы можете
Если Вы хотите сделать это с 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 не собьет это с толку согласно моим тестам).
Я полагаю, что можно использовать attrib для получения количества файла:
attrib.exe /s /D *.*|find /c /v "" >> filecount.txt
Это создаст файл под названием filecount.txt в текущем каталоге с количеством файлов и папок в текущем каталоге (включая недавно созданный файл). Можно измениться
*.*
кому:
<full_path>\*.*
для получения количества файла конкретного каталога. Удалите "/D" опцию, если Вы не хотите считать папки. "/s" опция обрабатывает файлы во всех каталогах в указанном пути. Поэтому удалите его, если Вы только хотите файлы в указанном пути и не хотите включать файлы в sub папки.
Так, например, если Вы хотите узнать, сколько файлов находится в Вашем диске C:\ и не любой подпапке, Вы использовали бы команду:
attrib.exe C:\*.* | find /c /v "" >> filecount.txt
Если бы мне только было нужно это, после того как я просто использовал бы dir, иначе я рассмотрел бы прокрутку моего собственного, вероятно, как приложение C#, потому что это - то, с чем я был бы самым знакомым (хотя VBScript или PowerShell также будут жизнеспособны).
(По тому, как - это не DOS при использовании cmd.exe),
DIr будет, конечно, работать
Не устанавливая что-то на сервере, но имея powershell на Вашей рабочей станции Вы могли сделать:
(gwmi -computer theserver -query "select *from cim_datafile where path = '\\'").count
та команда даст Вам все файлы (система и скрытый включенный) и, как ранее упомянуто, если powershell будет на машине, Вы можете просто
(GCI c:\*.*).count
Обратите внимание на это, если Вы не включаете. Вы получите количество всех файлов и всех каталогов. Вы не будете включать скрытые и системные файлы, которые необходимо добавить - сила для подсчета их всех
dir > file
shouldn' t работают в Windows? Перенаправление вывода isn' t точно волшебство, Вы знаете.
– Joey
9 February 2010 в 19:12
dir | grep (something)
избегать медленной экранной записи, которая замедляет вещи (и уменьшение его в целом).
– lorenzog
10 February 2010 в 11:13
Спросите и необходимо получить: http://technet.microsoft.com/en-us/library/ee692796.aspx
Подсчет количества объектов в папке
Ну, что делает Вы знаете: похоже, что солнце наконец выходит, что означает, что пора почти нам пойти. Прежде чем мы действительно, однако, позволим нам показать Вам один последний небольшой прием с Получением-ChildItem cmdlet. Иногда Вы не должны действительно знать много о файлах в папке; все, что действительно необходимо знать, - то, сколько файлов (если таковые имеются) может быть найдено в конкретной папке. Вот то, как можно быстро считать количество файлов в папке:
(Get-ChildItem C:\Scripts).Count
Что мы делаем здесь? Мы просто используем, Добираются-ChildItem для возврата набора всех объектов, найденных в папке C:\Scripts; потому что это - набор, все, что мы должны сделать, реагируют на значение свойства Count, которое говорит нам количество объектов в наборе. Отметьте использование круглых скобок: мы включаем команду Get-ChildItem в круглые скобки, чтобы гарантировать, что Windows PowerShell сначала захватывает набор и только затем реагирует на значение свойства Count для того набора.
И уверенный, можно включать фильтр, когда вызов Добирается-ChildItem. Потребность знать, сколько.PS1 файлов находится в папке C:\Scripts? Okey-doke:
(Get-ChildItem C:\Scripts -filter "*.ps1").Count
К вашему сведению.. Я погуглил "powershell файлы количества".
Найденный этим в сети:
dir /a-d | find /c ":" > NUMfiles.###
set /p count=<NUMfiles.###
echo %count%
Я протестировал, и это, кажется, работает.
dir
, команда включает строку с двоеточием в нем, которое является не файл. (2) Это полагается на формат времени для включения двоеточия, который doesn' t обязательно должны быть так. (3) Это полагается на числовой формат не включая двоеточие, который также doesn' t обязательно должны быть так. Кроме того, прохождение через файла здесь является ненужным и won' t работают если Вы don' t имеют запись access— плохая идея.
– Joey
9 February 2010 в 19:10
dir /a-d | find "File(s)"
Слово предупреждения об использовании PowerShell для простых операций файла как это - это невероятно медленно по сравнению с cmd.exe, особенно по сетевым соединениям или когда существуют тысячи файлов в каталоге. См. это сообщение форума для большего количества информации.
Просто протест для тех, кто мог бы использовать ответ PowerShell Trevoke выше (командная строка Windows: как получить количество всех файлов в текущем каталоге?): дизайном, повторяя свойство Count набора, возвращенного, Добираются-ChildItem, может дать вводящие в заблуждение результаты, если значение равняется 1 или 0. Это вызвано тем, что свойство Count только доступно на массивах. Если меньше чем 2 объекта возвращаются, Добираются-ChildItem, результатом является скаляр, и.Count ничего не возвращает. Для обхождения этого явно бросьте его в массив, например, (Получите-ChildItem C:\Scripts).Count.
Для большего количества информации см. http://connect.microsoft.com/PowerShell/feedback/details/354672/get-childitem-count-problem-with-one-file или http://www.vistax64.com/powershell/266379-get-childitem-count-not-working-one-file.html.
just count lines from the dir /B output (directories included):
dir /B | find /c /v "~~~"
for just count files (with no dirs):
dir /A-D /B | find /c /v "~~~"
Я делаю нечто подобное, и это мгновенно работает с любым количеством файлов.
Setlocal enabledelayedexpansion
Dir /A | find "File(s)" >tmp
For /F "tokens=1" %%i in (tmp) do set n=%%i
Del tmp
If !n! GEQ 10 echo Too many files in directory.
Самый быстрый метод, который я нашел, это запуск в PS консоли.
[System.IO.Directory]::GetFiles($path).Count
где $path - это локальный путь или UNC share.
.