我有1.0.1A
的版本
我想在每次运行时增加版本,如:
1.0.1B
,1.0.1C
,1.0.1D
,... 1.0.1Z
,1.0.1AA
,1.0.1AB
,... 1.0.1AZ
,{{ 1}}等等。
我们如何实现这一目标?
现在我正在使用Perl,版本类似于1.0.1BA
,1.0.0.A
等。
1.0.0.B
答案 0 :(得分:3)
改为这样:
use warnings;
use strict;
my $Buildno = '1.02B';
my ($version,$letters) = $Buildno =~ /^(.*?)([A-Z]+)\z/
or die "invalid buildno $Buildno\n";
my $NextBuild = $version . ++$letters;
print $NextBuild, "\n";
答案 1 :(得分:1)
@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
有趣的小运动。
在上面的例程中,按 Enter 进行下一步,任何字符输入都将终止。
从初始字符串开始,例程:incver
将生成newver
,其中包含作为:incver
参数提供的代码后的序列中的下一个序列。
下一个代码是通过查看最后一个字符并选择下一个字符获得的,增加最后一个有效字符会导致选择第一个字符。
所以,如果下一个选中的是与第一个有效的相同,那么我们需要做出决定 - 追加一个新字符(删除最后一个并添加第一个有效两次)或增加倒数第二个字符,并附加第一个有效的。
答案 2 :(得分:0)
my ($version,$letters) = $Buildno =~ /^(.*?)\.([A-Z]+)\z/
or die "invalid buildno $Buildno/n";
$NextBuild = $version . ++$letters;
print $NextBuild."\n";