@ECHO Off
SETLOCAL
SET "version=10.0.1A"
:next
CALL :incver %version%
ECHO version=%version% - new version=%newver%
SET "xxx="
SET /p xxx=Another ?
IF NOT DEFINED xxx SET "version=%newver%"&GOTO next
GOTO :EOF
:incver
SET "newver=%1"
SET "valid=A B C Y Z"
:: next on final character
CALL :changechar %newver:~-1%
IF %nextchar% neq %valid:~0,1% SET "newver=%newver:~0,-1%%nextchar%"&GOTO :EOF
:: Is 2nd-last a valid char?
:: If so, increment 2nd-last and restart last.
FOR %%b IN (%valid%) DO IF %newver:~-2,1%==%%b (
CALL :changechar %%b
CALL SET "newver=%newver:~0,-2%%%nextchar%%%nextchar%"
GOTO :EOF
)
:: Not a valid character so append another
SET "newver=%newver:~0,-1%%nextchar%%nextchar%
GOTO :eof
:changechar
SET "nextchar="
FOR %%a IN (%valid% %valid:~0,1%) DO IF DEFINED nextchar (
SET "nextchar=%%a"
GOTO :EOF
) ELSE IF %%a==%1 SET "nextchar=%%a"
GOTO :eof
興味深い少しの練習のようなものです。
上記のルーチンでは、を入力します。を入力すると、任意の文字入力が終了します。
:incver
のパラメータとして提供されたコードの後に、:incver
ルーチンは、次の順序を含むnewver
を生成します。
次のコードは、最後の文字を見て次のコードを選択し、最後の有効な文字を増やして最初のコードを選択することで得られます。
したがって、次の選択が最初の有効と同じ場合、新しい文字を追加する(最後の文字を削除して最初の有効な文字を2回追加する)か、2番目の文字を増やす最初の有効な文字を追加します。このような何かに
は
ピュアコード書き込み要求がスタックオーバーフローにオフトピックです - 我々はここ 質問*特定の*のプログラミングの問題に関連することを期待 - しかし、我々 は、喜んであなた自身で書くのを手伝ってくれます! [何を試してみましたか](https://stackoverflow.com/help/how-to-ask)とどこにいるのか教えてください。 これはまた、あなたの質問によく答えるのにも役立ちます。 – Charles
私はあなたの意図を理解しています。しかし、どのようにすれば、私はコード全体を探しているのか正当化できますか?私はいくつかのアイデアと少しの論理が必要です。 –