@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
將生成newver
,其中包含在以:incver
的參數提供的代碼之後的下一個順序。
下一個代碼是通過看最後一個字符選擇下一個,增加在選擇第一最後一個有效字符得到的結果。
因此,如果下一次選擇的是第一個有效的,那麼我們需要做出一個決定 - 追加一個新的字符(刪除最後一個並添加第一個有效的兩次)或遞增倒數第二個字符,並追加第一個有效的。
純代碼編寫請求是題外話堆棧溢出 - 我們期望在這裏 問題涉及到具體* *編程問題 - 但我們 會很樂意幫助你自己寫!告訴我們 [你試過的東西](https://stackoverflow.com/help/how-to-ask),以及你卡在哪裏。 這也將幫助我們更好地回答你的問題。 – Charles
我明白你的意圖。但是,你怎麼能證明我正在尋找整個代碼。我需要一些想法和小邏輯。 –