2.スクリプト本体

#以下の内容をコピペ貼り付け(先頭の#があるならここも貼り付けて大丈夫)


#変更可能範囲ここから---------------------------------------------

#出力ファイルフルパス

$otptPth="出力する先のフォルダパス\出力したいファイル名.txt"


#もとにするバックアップファイルディレクトリパス

$inptFldr="解凍後バックアップディレクトリパス"


#章区切り

#ダブルクォーテーションの間を好きな文字列に書き換えてね

$chptDlmt="------------------------------------"


#章タイトルフラグ

#1だったら章タイトルを出す。出したくなければ0にしてね

$chptFlg=1


#見出しフラグ

#1だったら見出しを出す。出したくなければ0にしてね

$sctnFlg=1


#出力用

#大見出し(:の後ろに見出し名がつく)

$bSct="大見出し:"

#小見出し(:の後ろに見出し名がつく)

$sSct="小見出し:"

#タイトル(:の後ろに見出し名がつく)

$ttlStr="タイトル:"

#改行(これを変更する場合はこれが何意味してるかわかってること!)

$brk="`r`n"


#変更可能範囲ここまで---------------------------------------------


#aboutパス作成

$abtpth=$inptFldr + "\" + "about.txt"

#目次配列初期化

$sctnArr=@();

#目次配列用カウンタ初期化

$sctnCnt=0;


#正規表現作っとく

$bSctRgx='^§ '

$sSctRgx='^ § '

$ttlRgx='^( )*[0-9]+\. '

$mkjRgx='^【目次】'

$cntntRgx='^【本文([0-9]+行)】'

$rpRgx = '^(§ | § |( )*[0-9]+\. )'


#見出しフラグが1なら

if($sctnFlg -eq 1){

#見出しと章タイトルを配列に格納していく

#目次行検索

$mkjnmbr= Get-Content $abtpth -Encoding utf8 | select-string $mkjRgx -Encoding utf8

#ファイルの最大行数取得(配列扱いにせにゃならんので-1)

$rowcnt=((Get-Content -Path $abtpth).Length - 1)

#aboutの目次部分まとめて目次配列に格納

$sctnArr=(Get-Content -Encoding UTF8 $abtpth)[$mkjnmbr.LineNumber..$rowcnt]

}


#出力用ファイル事前作成

New-Item $otptPth -type file

# バックアップファイルフォルダ内のファイルを取得する(ファイル名順)

$itemList = Get-ChildItem ($inptFldr + "\" + "episode*") | Sort-Object { $_.Name }


#取得したファイルリスト($itemList)をループで1件ずつ処理

foreach($item in $itemList){

#タイトル取得

$titleName=(Get-Content -Path $item.FullName -Encoding utf8)[1..1]

#見出しチェック

if($sctnFlg -eq 1){

#取得したタイトル名と目次配列の値(タイトル置換)が一致していなければ見出し出力処理

if(($sctnArr[$sctnCnt] -replace $ttlRgx) -ne $titleName){


#一致してない間ループ

while(($sctnArr[$sctnCnt] -replace $rpRgx) -ne $titleName){

#大見出しかチェック(正規表現で判定)

if($sctnArr[$sctnCnt] -match $bSctRgx){

#大見出しの出力実行(正規表現で不要部分を置換)

Write-Output ($bSct+($sctnArr[$sctnCnt] -replace $rpRgx)) | Add-content -Path $otptPth -Encoding utf8

#目次配列のカウンタ+1

$sctnCnt=$sctnCnt+1

continue

}

#小見出しかチェック(正規表現で判定)

if($sctnArr[$sctnCnt] -match $sSctRgx){

#小見出しの出力実行(正規表現で不要部分を置換)

Write-Output ($sSct+($sctnArr[$sctnCnt] -replace $rpRgx)) | Add-content -Path $otptPth -Encoding utf8

#目次配列のカウンタ+1

$sctnCnt=$sctnCnt+1

continue

}

#目次配列のカウンタ+1

$sctnCnt=$sctnCnt+1

}

}

}

if($chptFlg -eq 1){

Write-Output ($ttlStr+$titleName) | Add-content -Path $otptPth -Encoding utf8

}

Write-Output $brk | Add-content -Path $otptPth -Encoding utf8


#取得開始位置ゲット

$lnnmbr= Get-Content $item.FullName -Encoding utf8 | select-string $cntntRgx -Encoding utf8


#ファイルの最大行数取得

$rowcnt=((Get-Content -Path $item.FullName).Length - 1)

#内容取得

$content=(Get-Content -Path $item.FullName -Encoding utf8)[$lnnmbr.LineNumber..$rowcnt]

#本文部分を出力。文字コードはUTF8

Write-Output $content | Add-Content -Path $otptPth -Encoding utf8


#章区切り出力

Write-Output $brk+$chptDlmt+$brk | Add-content -Path $otptPth -Encoding utf8


}

  • Xで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る