コマンドプロンプトでの作成と公開を目指していたが、
文字列処理などがやりにくいのでPowerShellにしました。
とりあえず最低限のレベルに達したと思うので公開。
形式としてはスクリプトファイルと同階層にバッチを配置してバッチから叩く形式。
Enpitsu_dataというフォルダ内に月ごとにエクスポートしたデータを配置
バッチファイル
@echo off setlocal enabledelayedexpansion cd %~dp0 powershell -ExecutionPolicy RemoteSigned -File script.ps1
PowerShell
※スクリプト内のYYYYDDは任意で書き換え
# 実行中のパス取得/移動 $path = Split-Path -Parent $MyInvocation.MyCommand.Path Set-Location $path # ファイル読み込み # StreamReaderのコンストラクタに直接 「$path + "\test.txt"」を入力するとエラーになるので分ける $fileName = $path + "\Enpitsu_data\diaryYYYYDD.txt" $Export_Data = gc $fileName $Export_Data_FileName = $path + "\Enpitsu_Export.txt" #記事開始個所 $start = sls "\+\+\+" $fileName | ForEach-Object { $($_ -split":")[2]} #記事終了箇所 $end = sls "----" $fileName| ForEach-Object { $($_ -split":")[2]} #ループ開始 for ( $i = 0; $i -lt $start.Length ; $i++ ){ $Change_Data = "TITLE:" + ($Export_Data)[($start[$i]-2)] + "`r`n" $Change_Data += "STATUS: Draft" + "`r`n" + "CONVERT BREAKS: 1" + "`r`n" + "PRIMARY CATEGORY: 日記(非公開)" + "`r`n" $Year = ($Export_Data)[$start[$i]-3].Substring(0,4) $Month = ($Export_Data)[$start[$i]-3].Substring(4,2) $Day = ($Export_Data)[$start[$i]-3].Substring(6,2) $Change_Data += "DATE: " + $Month + "/" + $Day + "/" + $Year + " 00:00:00 PM" + "`r`n" $Change_Data += "-----" + "`r`n" + "BODY:" + "`r`n" $tempData = ($Export_Data)[$start[$i]..($end[$i]-2)] $tempData = $tempData -join "`r`n" $Change_Data += $tempData $Change_Data += "`r`n" + "--------" Write-Output $Change_Data | Out-File -FilePath $Export_Data_FileName -Encoding Default -append } # 終了 Write-Host("終了")
次はフォルダ内のすべてのテキストファイルを変換したり体裁を整える予定