PowerShell ISEを使って次のコマンドを実行してみましょう。
echo "Hello, World"
$split_size = 3 # 分割数
$filenum = 1 # ファイル名連番
$cur_line = 1 # 現在の分割数
$input_file = "hoge.csv" # 入力ファイル名
# ヘッダを取得
$header = Get-Content $input_file | select -First 1
# ヘッダ以外を_hoge_body.csv に保存
Get-Content $input_file | select-object -skip 1 | `
%{
# 現在の処理行数が1行目の時だけヘッダを出力
# ファイルを上書きする
if ( $cur_line % $split_size -eq 1 ){
Set-Content -Path test$filenum.txt -Value $header -Encoding default
}
# 各行を所定のファイルに出力する
Add-Content -Path test$filenum.txt -Value $_ -Encoding default
# 分割したい行数に達したら余りが0になったら
# ファイル名に使う番号を1増やす
# 処理行数を1にリセット
if ( $cur_line % $split_size -eq 0 ){
$filenum++
$cur_line = 1
} else {
$cur_line ++ # 処理行数を増やす
}
}
# コマンド実行前にtestX.txtを削除すること
$i = 0
# ヘッダを取得
$header = Get-Content hoge.csv | select -First 1
# ヘッダ以外を_hoge_body.csv に保存
Get-Content hoge.csv | select-object -skip 1 | `
%{ Add-Content -Path _hoge_body.csv -Value $_ -Encoding default }
# _hoge_body.csv を3行ずつ読み込みヘッダとボディをくっつけてtestX.txtに保存 Xには番号がはいる
# `をとって一行にかいてもよい
Get-Content -Path _hoge_body.csv -ReadCount 3 | `
%{ Add-Content -Path test$i.txt -Value $header -Encoding default ; `
Add-Content -Path test$i.txt -Value $_ -Encoding default ; `
$i++ }
# _hoge_body.csv を削除
Remove-Item _hoge_body.csv
if ($Args.length -lt 1) {
Write-Host "Hogehoge"
exit(1)
}
$input = $Args[0]
if (!(Test-Path $input)) {
Write-Host "Fugafuga"
exit(1)
}
Write-Host $Args.length
Write-Host $input