-3

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();
    }
}
4

1 に答える 1