読者です 読者をやめる 読者になる 読者になる

TeraPad 経由で印刷する PowerShell スクリプトを改良中

以前書いた PowerShell スクリプトを改良していた。フォルダの中に数字のファイル名がついたテキストファイルが大量にあってそれを順番に印刷するために作成した。自分で使う用なのでエラー処理書いていないので今度書きたい。
エディタ TeraPad の exe に /p オプションをつけてファイルを渡すと印刷してくれる。わざわざ TeraPad を使うのは左右の余白やフォントの大きさなどを細かく調整して印刷する必要があったから。

$location = Get-Location
# ログを記録する
start-transcript -path $location\POlog.txt -Append

Get-Date | Out-Host


function startprint {
    $start = Read-Host "何号から? -> "
    echo "確認:開始する号数は $start と入力されました`n"
    $end = Read-Host "何号まで? -> "
    echo "確認:終了する号数は $end と入力されました`n"
    $times = Read-Host "何部ずつ印刷しますか?(数字を半角で入力してください)-> "
    $check = Read-Host "印刷を開始しますか?(y or n)-> "

    $start = [int]$start
    $end = [int]$end
    $times = [int]$times

    $array = @() # 空の配列
    if($check -eq "y"){
        echo "$start 号から $end 号まで $times 部ずつ印刷を開始します`n"
        for ($i = $start; $i -le $end; $i++){
            if (Test-Path "$i.txt"){
            $array += "$i.txt"
            }
            else {
                echo "$i.txt は存在しません"
            }
        }
        function printloop {
            # 配列からひとつずつ印刷する
            for ($p = 0; $p -le $array.Length-1; $p++){
                $file = $array[$p] # ファイル名を代入
                C:\Users\USERNAME\Tools\TeraPad108\TeraPad.exe /p $location\$file
                Start-Sleep -s 3
            }
        }
        # 指定した部数の分 printloop ループを回す
        for ($q = 1; $q -le $times; $q++){
            printloop
        }
    }
    else {
        echo "印刷を中断して終了します`n"
    }
}

function next {
    $continue = Read-Host "続けて印刷しますか?(y or n)-> "
    if($continue -eq "y"){
        startprint
        next
    }
    else {
    echo "終了します"
    }
}

startprint

インデントの閉じ括弧の位置がよくわかっていない。これでいいのかしらん。