📌

たい

2023/12/08に公開

ユーザーにフォルダを選択させる関数

function Select-Folder($description) {
$folderBrowser = New-Object System.Windows.Forms.FolderBrowserDialog
$folderBrowser.Description = $description
$folderBrowser.ShowDialog() | Out-Null
return $folderBrowser.SelectedPath
}

ディレクトリ選択

$readDirectory = Select-Folder "読み込みディレクトリを選択してください。"
$outputDirectory = Select-Folder "アウトプットディレクトリを選択してください。"

タイムスタンプフォルダの作成

$timestamp = Get-Date -Format "yyyy-MM-dd-HH-mm-ss"
$timestampFolder = New-Item -ItemType Directory -Path (Join-Path $outputDirectory $timestamp)

ZIPファイルの一覧を取得し、解凍

Get-ChildItem -Path $readDirectory -Filter "*.zip" | ForEach-Object {
$destination = Join-Path $timestampFolder $.BaseName
New-Item -ItemType Directory -Path $destination -Force
Expand-Archive $
.FullName -DestinationPath $destination
}

解凍したファイルの一覧を取得し、コピー

Get-ChildItem -Path $timestampFolder -Recurse | Where-Object { -not $.PSIsContainer } | ForEach-Object {
$copyPath = $
.DirectoryName + "" + $.BaseName + "cp" + $.Extension
Copy-Item $
.FullName -Destination $copyPath

# 拡張子を.txtに変更
$newTxtPath = [System.IO.Path]::ChangeExtension($copyPath, ".txt")
Rename-Item -Path $copyPath -NewName $newTxtPath

}

処理が完了したことを示すメッセージ

Write-Host "処理が完了しました。"

Discussion