テキストファイルを行数を指定して分割したい
WindowsのPCで、テキストファイルを行数を指定して分割したいと思ったことはありませんか?ログなどのテキストファイルを取り扱う際に特定の行数で分割して扱いやすくしたいというケースも珍しくないと思います。この記事では、テキストファイルを行数を指定して分割する方法をご紹介していきます。
テキストファイルを行数を指定して分割する方法
それでは、テキストファイルを行数を指定して分割する方法を説明します。まずはWindows PowerShellからテキストファイルを行数を指定して分割する方法です。デスクトップ画面左下のスタートボタンをクリックしてスタートメニューを開き、「すべてのアプリ」から「Windows PowerShell」をクリックしましょう。
これで、テキストファイルを指定した行数で分割してそれぞれファイルとして保存させることができますよ。
# アセンブリの読み込み Add-Type -AssemblyName System.Windows.Forms Add-Type -AssemblyName System.Drawing # 分割する行数のフォームを作成 $form = New-Object System.Windows.Forms.Form $form.Text = "分割行数" $form.Size = New-Object System.Drawing.Size(260,180) # OKボタンを設定 $OKButton = New-Object System.Windows.Forms.Button $OKButton.Location = New-Object System.Drawing.Point(40,100) $OKButton.Size = New-Object System.Drawing.Size(75,23) $OKButton.Text = "OK" $OKButton.DialogResult = "OK" # キャンセルボタンを設定 $CancelButton = New-Object System.Windows.Forms.Button $CancelButton.Location = New-Object System.Drawing.Point(130,100) $CancelButton.Size = New-Object System.Drawing.Size(75,23) $CancelButton.Text = "キャンセル" $CancelButton.DialogResult = "Cancel" # ラベルを設定 $label = New-Object System.Windows.Forms.Label $label.Location = New-Object System.Drawing.Point(10,30) $label.Size = New-Object System.Drawing.Size(250,20) $label.Text = "分割する行数を入力してください。" # 入力ボックスを設定 $textBox = New-Object System.Windows.Forms.TextBox $textBox.Location = New-Object System.Drawing.Point(10,70) $textBox.Size = New-Object System.Drawing.Size(225,50) # キーとボタンの関係 $form.AcceptButton = $OKButton $form.CancelButton = $CancelButton # ボタン等をフォームに追加 $form.Controls.Add($OKButton) $form.Controls.Add($CancelButton) $form.Controls.Add($label) $form.Controls.Add($textBox) #フォームを常に手前に表示 $form.Topmost = $True #フォームをアクティブにしてテキストボックスにフォーカスを設定 $form.Add_Shown({$textBox.Select()}) # 引数のチェック if([string]::IsNullorEmpty($Args[0])) { [System.Windows.Forms.MessageBox]::Show("分割するファイルが指定されていません。", "分割ファイル指定エラー") exit } # ファイルの存在をチェック if(-not(Test-Path $Args[0])){ [System.Windows.Forms.MessageBox]::Show("分割対象ファイルが存在しません", "ファイル指定エラー") exit } # フォームを表示 $result = $form.ShowDialog() if ($result -eq "OK") { $Line = $textBox.Text } else { exit } # 分割行数が数値か確認 if (-not([int]::TryParse($Line,[ref]$null))) { [System.Windows.Forms.MessageBox]::Show("数値以外の値が入っているため、処理を終了します。", "分割行数指定エラー") exit } # 分割後ファイル名指定 $FileBaseName = [System.IO.Path]::GetFileNameWithoutExtension($Args[0]) $FileExtension = [System.IO.Path]::GetExtension($Args[0]) $FilePath = Split-Path -Parent $Args[0] $i=1 # ファイル分割 cat $Args[0] -ReadCount $Line | % { $_ > $FilePath\$FileBaseName"_"$i$FileExtension;$i++ }