たい
ユーザーにフォルダを選択させる関数
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