ブログの記事から検索

2023年4月25日火曜日

ChatGPTにPowerShell書かせてみた

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($_) }


2 件のコメント:

  1. おまけスクリプト

    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"

    返信削除
  2. 元記事のスクリプトは、案の定そのままでは動かなかったので色々と手を加えた。
    まぁでもカスタマイズベースをぱぱっと出してくれるのはありがたい。

    返信削除