テキスト分割 コマンドレット

ソース

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>