PowerShell で正しく動作する次のものがありますが、C# で同じことを行う方法を知りたいと思っていました。.zip ファイルを見つけて、それらを一時的な場所に 1 つずつ解凍し、コンテンツを検索し、見つかった場合はファイルを一覧表示してから、一時ファイルを削除して次のファイルに移動する必要があります。
私の質問は; 解凍、ファイル検索、および削除機能を実行できる対応する C# メソッドは何ですか?
function Lookin-Zips() {
param ($SearchPattern);
$archive = [System.IO.Compression.ZipFile]::OpenRead($archivePath);
try {
# enumerate all entries in the archive, which includes both files and directories
foreach($archiveEntry in $archive.Entries) {
# if the entry is not a directory (which ends with /)
if($archiveEntry.FullName -notmatch '/$') {
# get temporary file -- note that this will also create the file
$tempFile = [System.IO.Path]::GetTempFileName();
try {
# extract to file system
[System.IO.Compression.ZipFileExtensions]::ExtractToFile($archiveEntry, $tempFile, $true);
# create PowerShell backslash-friendly path from ZIP path with forward slashes
$windowsStyleArchiveEntryName = $archiveEntry.FullName.Replace('/', '\');
# run selection
Get-ChildItem $tempFile | Select-String -pattern "$SearchPattern" | Select-Object @{Name="Filename";Expression={$windowsStyleArchiveEntryName}}, @{Name="Path";Expression={Join-Path $archivePath (Split-Path $windowsStyleArchiveEntryName -Parent)}}, Matches, LineNumber
}
finally {
Remove-Item $tempFile;
}
}
}
}
finally {
# release archive object to prevent leaking resources
$archive.Dispose();
}
}