Как быстро посчитать количество файлов в папке?
На Windows 2003 Server у меня есть приложение, которое обрабатывает запросы и сохраняет их в папке в виде очереди, куда приходит второй процесс и обрабатывает эти сохраненные запросы. Однако иногда количество файлов достигает 100 000.
Использование Windows Explorer или даже dir в командной строке не похоже на решение для меня, чтобы узнать, сколько файлов там хранится. Это также занимает слишком много времени, процессора и ввода-вывода.
Какие-либо предложения?
3 ответа
Хорошо, в этом случае, если нет встроенных утилит, которые могли бы помочь, я написал этот небольшой пагубный код:
используя Систему; используя System.IO;
namespace FileCount
{
class Program
{
static void Main(string[] args)
{
var files = Directory.GetFiles(".");
Console.Write(files.Length);
}
}
}
но я надеялся, что мне не нужно было этого делать. Всем спасибо:)
Обновление: я забыл сказать, что это в.NET (любая версия) и язык C#.
Я не уверен, насколько быстро это будет работать на такой большой папке, но стоит попробовать.
Сохраните код ниже в файле.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" необходим, если вы хотите рекурсивно искать во всех подпапках