Назад | Перейти на главную страницу

Как быстро подсчитать количество файлов в папке?

На сервере Windows 2003 у меня есть приложение, которое обрабатывает запросы и сохраняет их в папке в виде очереди, куда приходит второй процесс и обрабатывает эти сохраненные запросы. Однако иногда количество файлов достигает 100 000.

Использование Windows Explorer или даже dir в командной строке не кажется мне большим решением, чтобы узнать, сколько файлов там хранится. Это также занимает слишком много времени, процессора и ввода-вывода.

Какие-либо предложения?

Я не уверен, насколько быстро это будет работать с такой большой папкой, но попробовать стоит.

Сохраните приведенный ниже код в файле .vbs. Затем запустите его из командной строки CMD следующим образом:

CSCRIPT FileCount.vbs C:\Insert\Your\Path\Here.

Он учитывает только файл в корне пути, но его можно изменить, чтобы включить подпапки.

Dim oArgs
Set oArgs = WScript.Arguments

If oArgs.Count >= 1 Then
   WScript.Echo FileCount(oArgs(0))   
End If

'------------------------------------------------------------
'
'------------------------------------------------------------
Function FileCount(sPath)
   Dim oFSO
   Dim oFolder
   Dim oFiles

   Set oFSO = CreateObject("Scripting.FileSystemObject")
   Set oFolder = oFSO.GetFolder(sPath)
   Set oFiles = oFolder.Files
   FileCount = oFiles.Count
End Function

Вы можете использовать скрипт на этой странице и назовите это так:

 call filecount.bat C:\temp filecount /S
 echo %filecount%

Переключатель "/ S" нужен, если вы хотите рекурсивно искать во всех подпапках.

Что ж, в этом случае, если нет встроенных утилит, которые могут помочь, я написал эту маленькую ошибку:

using System;
using System.IO;

namespace FileCount
{
    class Program
    {
        static void Main(string[] args)
        {
            var files = Directory.GetFiles(".");
            Console.Write(files.Length);
        }
    }
}

но я надеялся, что мне не нужно этого делать. Всем спасибо :)

Обновление: я забыл сказать, что это в .NET (любой версии), а язык - C #.