テキストファイルを行数を指定して分割する方法!

テキストファイルを行数を指定して分割する方法!

Windowsのパソコンで、テキストファイルを行数を指定して分割したいと思ったことはありませんか?議事録や各種テキストログを行数を指定して分割することで、扱いやすくできますよ。この記事では、テキストファイルを行数を指定して分割する方法をご紹介しています。


目次[非表示]

  1. テキストファイルを行数を指定して分割したい
  2. テキストファイルを行数を指定して分割する方法

テキストファイルを行数を指定して分割したい

WindowsのPCで、テキストファイルを行数を指定して分割したいと思ったことはありませんか?ログなどのテキストファイルを取り扱う際に特定の行数で分割して扱いやすくしたいというケースも珍しくないと思います。この記事では、テキストファイルを行数を指定して分割する方法をご紹介していきます。

テキストファイルを行数を指定して分割する方法

それでは、テキストファイルを行数を指定して分割する方法を説明します。まずはWindows PowerShellからテキストファイルを行数を指定して分割する方法です。デスクトップ画面左下のスタートボタンをクリックしてスタートメニューを開き、「すべてのアプリ」から「Windows PowerShell」をクリックしましょう。

PowerShell起動画面
PowerShellが起動したら、コマンドを入力します。コマンドは「$i=1; cat .\[分割対象ファイル] -ReadCount [分割行数] | % { $_ > [分割後ファイル名]_$i.txt;$i++ }」です。「分割行数」で分割したい行数を数字で入力して指定すればOKです。

これで、テキストファイルを指定した行数で分割してそれぞれファイルとして保存させることができますよ。

テキストエディタを起動し、下記のスクリプトを入力する
もっと手軽にテキストファイルの分割を行うには、スクリプトファイルを作成します。メモ帳アプリなどのテキストエディタを起動したら、下記のスクリプトを入力しましょう。そして「ファイル」→「名前を付けて保存」ダイアログボックスからファイルの保存を行う際に拡張子を「.ps1」にして保存します。
# アセンブリの読み込み
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++ }
「新規作成」→「ショートカット」をクリック
スクリプトファイルが作成できたら、スクリプトファイルのショートカットの作成を行います。デスクトップ画面の何もないところを右クリックしてメニューを開いたら、「新規作成」→「ショートカット」をクリックしましょう。
「項目の場所を入力してください」欄に「powershell -ExecutionPolicy RemoteSigned -windowstyle hidden -File [作成したスクリプトファイルのパス]」を入力し「次へ」をクリック
「ショートカットの作成」ダイアログボックスが表示されます。「項目の場所を入力してください」入力欄に「powershell -ExecutionPolicy RemoteSigned -windowstyle hidden -File [作成したスクリプトファイルのパス]」を入力したら「次へ」をクリックしましょう。
「このショートカットの名前を入力してください」欄でショートカット名を入力→「完了」をクリック
続いて、「このショートカットの名前を入力してください」欄でショートカット名を入力します。名前は自由に決めてOKです。入力できたら「完了」をクリックしましょう。
デスクトップ画面にスクリプトファイルのショートカットが作成された
これで、デスクトップ画面にスクリプトファイルのショートカットが作成されました。あとはこのショートカットに分割したいテキストファイルをドラッグ&ドロップすると「分割行数」ダイアログボックスが表示されるので、行数を数字で入力して「OK」をクリックすればテキストファイルの配置されているフォルダに分割されたテキストファイルが連番で保存されますよ。

関連記事