ディレクトリ ツリーを実行し、JSON 形式でファイルを一覧表示する単純な PowerShell スクリプトがあります。
各エントリの形式は次のとおりです。
{id: ファイル名、サイズ: バイト}
短いリストでは問題なく動作しますが、大きなディレクトリでは非常に遅くなります。また、その内容をファイル (manifest.json) に書き込みたいと考えています。
私は C# .NET を書くのがずっと得意です (私は Directory.EnumerateFiles() を使用します)。
しかし、PowerShell で単純なことを簡単に実行できないかどうかを確認できると思いました。
しかし、このスクリプトは、10,000 エントリに達すると本当に行き詰まります。
$src = "G:\wwwroot\BaseMaps\BigBlueMarble"
$path = $src + "\*"
$excludes = @("*.json", "*.ps1")
$version = "1.1"
Write-Host "{"
Write-Host "`"manifest-version`": `"$version`","
Write-Host "`"files`": ["
$dirs = Get-Item -Path $path -Exclude $excludes
$dirs | Get-ChildItem -Recurse -File | % {
$fpath = $_.FullName.Replace($src, "").Replace("\","/")
$date = $_.LastWriteTime
$size = $_.Length
$id = $_.BaseName
Write-Host "{`"id`": `"$id`", `"size`": `"$size`"},"
}
Write-Host "]"
Write-Host "}"