PowerShellとfsfでC#のソースファイルを選択しコピーするスクリプト

コンピュータ

C#のソースファイルを使い回すために、コピーするスクリプトを作りました。
fzfがインストールされていることが前提となります。

実行すると.csファイルの一覧が表示されるので、選択するとカレントディレクトリに.csファイルがコピーされるだけです。
.csファイルの先頭業に//でファイルの概略を記述しておくと視認性が良くなります。

ファイル名:Select-CSharpFile.ps1

$libDir = "C#ファイルが保存されたディレクトリのパス"
$targetDir = Get-Location

# ファイル一覧+1行目コメントを生成
$files = Get-ChildItem -Path $libDir -Filter *.cs | ForEach-Object {
    $fullPath = $_.FullName
    $relativePath = $fullPath.Substring($libDir.Length + 1)
    $firstLine = (Get-Content $fullPath -Encoding UTF8 | Select-Object -First 1)

    if ($firstLine -match "^//") {
        "{0}`t{1}" -f $relativePath, $firstLine.Trim()
    } else {
        "{0}`t" -f $relativePath
    }
}

# fzfで選択(複数可)→ 選ばれた行からファイル名を抽出してコピー
$selected = ($files | fzf --multi --prompt "選択: ") -split "`n"

foreach ($line in $selected) {
    $relativePath = ($line -split "`t")[0]
    $sourcePath = Join-Path $libDir $relativePath
    $destPath = Join-Path $targetDir (Split-Path $relativePath -Leaf)

    Write-Host "Copying $relativePath → $destPath"
    Copy-Item -Path $sourcePath -Destination $destPath -Force
}

コメント