AIと数回やり取りしたら、脳内デバッグで概ね満足しそうなものができたので、リファレンス片手にがり勉するよりずっと楽。
フローを言語化するスキルさえあれば、十分に使える物ができあがりますね。
code
# 出力するファイルパスを指定
$outfile = "C:\output.csv"
# 検索するフォルダーを指定
$folder = "C:\folder"
# キーワードの入力を促す
$keyword = Read-Host "Enter keyword to search files"
# 指定したフォルダー以下にあるファイルを再帰的に検索し、キーワードを含むファイルを配列に追加する
$files = Get-ChildItem -Path $folder -Include "*$keyword*" -Recurse | Where-Object { $_.Name -like "*$keyword*" }
# 空の配列を作成
$output = @()
# 各ファイルからデータを読み込み、最終行の2番目と6番目のカラムを取得して配列に追加する
foreach ($file in $files) {
$data = Import-Csv $file.FullName
$output += $data[-1].Column2, $data[-1].Column6
$output += "`r`n" # 入力ファイルが変わる度に改行を追加する
}
# 出力データをCSVファイルに書き込む
$outfile = New-Item -ItemType File $outfile
$output | ForEach-Object { $outfile.WriteLine($_) }
おまけスクリプト
返信削除param (
[Parameter(Mandatory=$false, Position=0)]
[string]$sourceFolder = "C:\CSVFiles",
[Parameter(Mandatory=$false, Position=1)]
[string]$destinationFolder = "C:\CSVFiles\Backup"
)
$csvFiles = Get-ChildItem $sourceFolder -Recurse | Where-Object {$_.Extension -eq ".csv"}
foreach ($file in $csvFiles) {
$destinationFilePath = Join-Path $destinationFolder $file.Name
Copy-Item $file.FullName -Destination $destinationFilePath
}
このまま使うと二回目以降ひどい目に遭うなww
.\script.ps1 -sourceFolder "C:\source" -destinationFolder "C:\destination"
元記事のスクリプトは、案の定そのままでは動かなかったので色々と手を加えた。
返信削除まぁでもカスタマイズベースをぱぱっと出してくれるのはありがたい。