同じコードを数年前にExcelVBAでしこしこ作ってたのがなつかしい
function Zip-Subfolders { param( [string]$directory ) # 指定されたディレクトリ内のサブフォルダを取得 $subfolders = [System.IO.Directory]::GetDirectories($directory) | % { [System.IO.DirectoryInfo]::new($_) } foreach ($folder in $subfolders) { # 圧縮ファイルの保存先パス $zipFilename = "$($folder.Name).zip" $zipFilepath = Join-Path -Path $directory -ChildPath $zipFilename # サブフォルダをZIP圧縮 Write-Host "圧縮中..." [System.IO.Compression.ZipFile]::CreateFromDirectory($folder.FullName, $zipFilepath) Write-Host "$zipFilepath に圧縮しました。" } } # ユーザーにフォルダパスを入力させる $folderPath = Read-Host "圧縮する親フォルダのパスを入力してください" # パスが存在するか確認 if ([System.IO.Directory]::Exists($folderPath)) { Zip-Subfolders -directory $folderPath }