テキスト分割 コマンドレット
ソース
Split-Text.ps1 [PowerShell スクリプト]
# 標準入力に与えられたテキストを指定された行数に分けてファイルへ出力する。
# 例えば標準入力に 1000 行送信し、50 行を指定した場合は 20 ファイルを出力する。
#
# 出力ファイルは CP932 (Shift-JIS) 。
Param( [Int32] $number, [String] $path )
if( $number -le 0 )
{
Write-Host 引数が不正です
return
}
$stream = $($input)
$nFileIndex = 0
$nCount = $stream.Count
$nIndex = 0
while( $nCount -gt 0 )
{
$nCurrentCount = $nCount;
if( $nCurrentCount -gt $number )
{
$nCurrentCount = $number
}
$nCount -= $nCurrentCount
$strDstpath = '{0}_{1}.txt' -f $path, ++ $nFileIndex
$nIndex .. ($nIndex + $nCurrentCount - 1) | %{$stream[$_]} | Out-File -Encoding default -FilePath $strDstpath
Write-Host ('{0,5} ... {1,5}, {2}' -f $nIndex, ($nIndex + $nCurrentCount - 1), $strDstpath)
$nIndex += $nCurrentCount
}
Write-Host 完了
使用例
PS C:\tmp> Get-Content .\input.txt | Split-Text 8 .\output
0 ... 7, .\output_1.txt
8 ... 15, .\output_2.txt
16 ... 23, .\output_3.txt
24 ... 31, .\output_4.txt
32 ... 39, .\output_5.txt
40 ... 47, .\output_6.txt
48 ... 51, .\output_7.txt
完了
PS C:\tmp>