Windows 2003 Serverには、要求を処理し、2番目のプロセスが来て、これらの保存された要求を処理するキューとしてフォルダーに格納するアプリケーションがあります。ただし、ファイルの数が100,000に達する場合があります。
Windowsエクスプローラーまたはコマンドプロンプトでdirを使用しても、保存されているファイルの数を確認するための解決策にはならないようです。また、CPUとI/Oにも時間がかかりすぎます。
助言がありますか?
この場合、私がこの小さなバガーを書くのを助けることができる組み込みのユーティリティがない場合:
using System;
using 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」が必要です。