九九を表示するバッチファイル

練習で作ったバッチファイルです。九九を表示します。九九と言っても、実際には99×99まで対応しています。 *1

バッチファイル

kuku.cmd
@echo off
setlocal EnableDelayedExpansion

rem 99×99まで対応
echo 縦の最大値(N1)と横の最大値(N2)を入力してください。
set /p N1="N1(1-99):"
set /p N2="N2(1-99):"
echo.

rem ヘッダ行
set HEADER1=   ^|
set HEADER2=---+

for /l %%I in (1, 1, %N2%) do (
    if %%I lss 10 (
        set PADDING=   
    ) else (
        set PADDING=  
    )
    
    set HEADER1=!HEADER1! !PADDING!%%I
    set HEADER2=!HEADER2!-----
)
echo !HEADER1!
echo !HEADER2!

rem データ行
for /l %%I in (1, 1, %N1%) do (
    
    if %%I lss 10 (
        set PADDING= 
    ) else (
        set PADDING=
    )
    set LINE= !PADDING!%%I^|
    
    for /l %%J in (1, 1, %N2%) do (
        set /a "RESULT=%%I * %%J"
        
        if !RESULT! lss 10 (
            set PADDING=   
        ) else if !RESULT! lss 100 (
            set PADDING=  
        ) else if !RESULT! lss 1000 (
            set PADDING= 
        ) else (
            set PADDING=
        )
        
        set LINE=!LINE! !PADDING!!RESULT!
    )
    
    echo !LINE!
)

echo.
echo 終了するには何かキーを押してください...
pause > NUL
exit /b 0

実行結果

9×9を指定した場合
縦の最大値(N1)と横の最大値(N2)を入力してください。
N1(1-99):9
N2(1-99):9

   |    1    2    3    4    5    6    7    8    9
---+---------------------------------------------
  1|    1    2    3    4    5    6    7    8    9
  2|    2    4    6    8   10   12   14   16   18
  3|    3    6    9   12   15   18   21   24   27
  4|    4    8   12   16   20   24   28   32   36
  5|    5   10   15   20   25   30   35   40   45
  6|    6   12   18   24   30   36   42   48   54
  7|    7   14   21   28   35   42   49   56   63
  8|    8   16   24   32   40   48   56   64   72
  9|    9   18   27   36   45   54   63   72   81

終了するには何かキーを押してください...
15×7を指定した場合
縦の最大値(N1)と横の最大値(N2)を入力してください。
N1(1-99):15
N2(1-99):7

   |    1    2    3    4    5    6    7
---+-----------------------------------
  1|    1    2    3    4    5    6    7
  2|    2    4    6    8   10   12   14
  3|    3    6    9   12   15   18   21
  4|    4    8   12   16   20   24   28
  5|    5   10   15   20   25   30   35
  6|    6   12   18   24   30   36   42
  7|    7   14   21   28   35   42   49
  8|    8   16   24   32   40   48   56
  9|    9   18   27   36   45   54   63
 10|   10   20   30   40   50   60   70
 11|   11   22   33   44   55   66   77
 12|   12   24   36   48   60   72   84
 13|   13   26   39   52   65   78   91
 14|   14   28   42   56   70   84   98
 15|   15   30   45   60   75   90  105

終了するには何かキーを押してください...

*1:Windows XP SP3で確認しました。