OK
ユーザーにフォルダを選択させる関数
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
param (
[string]$readDirectory,
[string]$outputDirectory
)
タイムスタンプフォルダの作成
$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
}
処理が完了したことを示すメッセージ
Write-Host "処理が完了しました。"
@echo off
SET /P readDirectory="読み込みディレクトリを入力してください: "
SET /P outputDirectory="アウトプットディレクトリを入力してください: "
PowerShell -NoProfile -ExecutionPolicy Bypass -File "your_script.ps1" -readDirectory "%readDirectory%" -outputDirectory "%outputDirectory%"
pause
Add-Type -AssemblyName System.Windows.Forms
ユーザーにフォルダを選択させる関数
function Select-Folder($description) {
$folderBrowser = New-Object System.Windows.Forms.FolderBrowserDialog
$folderBrowser.Description = $description
if ($folderBrowser.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK) {
return $folderBrowser.SelectedPath
} else {
exit
}
}
ディレクトリ選択
$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)
読み込みディレクトリ内のフォルダ名一覧を取得し、コピー
Get-ChildItem -Path $readDirectory -Directory | ForEach-Object {
copyPath = Join-Path $_.Parent.FullName ( _.Name + "cp")
Copy-Item $.FullName -Destination $copyPath -Recurse
}
処理が完了したことを示すメッセージ
Write-Host "処理が完了しました。"
Add-Type -AssemblyName System.Windows.Forms
ユーザーにフォルダを選択させる関数
function Select-Folder($description) {
$folderBrowser = New-Object System.Windows.Forms.FolderBrowserDialog
$folderBrowser.Description = $description
if ($folderBrowser.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK) {
return $folderBrowser.SelectedPath
} else {
exit
}
}
ディレクトリ選択
$readDirectory = Select-Folder "読み込みディレクトリを選択してください。"
ディレクトリ内のフォルダ名一覧を取得し、処理
Get-ChildItem -Path $readDirectory -Directory | ForEach-Object {
$newDirPath = $_.FullName + "_cp"
New-Item -ItemType Directory -Path $newDirPath -Force
}
処理が完了したことを示すメッセージ
Write-Host "処理が完了しました。"
@echo off
PowerShell -NoProfile -ExecutionPolicy Bypass -File "script.ps1"
pause
Add-Type -AssemblyName System.Windows.Forms
フォルダ選択ダイアログを作成する関数
function Select-Folder($description) {
$folderBrowser = New-Object System.Windows.Forms.FolderBrowserDialog
$folderBrowser.Description = $description
$folderBrowser.ShowNewFolderButton = $true
if ($folderBrowser.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK) {
return $folderBrowser.SelectedPath
} else {
return $null
}
}
読み込みディレクトリを選択
$inputDirectory = Select-Folder -description "読み込みディレクトリを選択してください。"
if ($inputDirectory) {
Write-Host "選択された読み込みディレクトリ: $inputDirectory"
} else {
Write-Host "読み込みディレクトリは選択されませんでした。"
}
アウトプットディレクトリを選択
$outputDirectory = Select-Folder -description "アウトプットディレクトリを選択してください。"
if ($outputDirectory) {
Write-Host "選択されたアウトプットディレクトリ: $outputDirectory"
} else {
Write-Host "アウトプットディレクトリは選択されませんでした。"
}