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
}
コメント