55116


以下の様に書いても、008の次に001が表示され、009以降の表示が出来ないのですが  
どの様にすれば良いのでしょうか

[code]

    @echo off
    SetLocal EnableDelayedExpansion
    SET NUM=1
    :Loop
    IF !NUM! LEQ 99 ( IF !NUM! LEQ 9 (SET NUM=00!NUM!) else (SET NUM=0!NUM!) ) else (SET NUM=!NUM!)
    ECHO !NUM!
    SET /A NUM+=1
    GOTO :Loop
    EndLocal
    EXIT /B
    
[/code]


CC BY-SA 4.0
2019-05-20T11:21:47.467
55114
2019-05-20T23:22:35.843
2019-05-20T12:04:40.863
31483
31483
question
batch-file
BATで0埋めの連番を出力したい


テクニックの問題として、`1`ではなく`100`など大きな数値で計算を行い、下２桁を参照することで簡単に`0`補完できます。

[code]

    @ECHO OFF
    SET NUM=100
    :Loop
    SET /A NUM+=1
    echo %NUM:~-2%
    IF NOT "%NUM:~-2%"=="00" GOTO Loop
    EXIT /B
    
[/code]

* * *

ちなみに`008`の次が`1`となる原因ですが、たぶん数値が`0`から始まっているため８進数と解釈されたためと思われます。８進数で有効な数字は`0`～`7`なので`8`や`9`は非数値として無視され`00`として扱われています。  
数値保存用の変数と文字列用の変数を分けるべきです。

* * *

なお、`GOTO`を用いたループについての質問を受けたため、`GOTO`を用いたループで回答しました。その回答に対して`FOR
/F`を用いた問題が解決できないとコメントされても困ります。`FOR /F`を用いた問題を解決したいのであれば、`FOR
/F`を用いた問題について質問するべきです。


CC BY-SA 4.0
2019-05-20T11:55:06.210
55116
2019-05-20T23:22:35.843
2019-05-20T23:22:35.843
4236
4236
55114
answer