如何将变量字符限制为限制?(批)



我想学习如何限制我开发的程序的随机字符串。

@echo off
:re
echo %RANDOM%%RANDOM%%RANDOM%%RANDOM%%RANDOM%%RANDOM%
goto re

为此,我拿走了任何不重要的东西。

我想要的:我希望该程序随机生成数字行,使它们适合一定长度,然后回声与用户。

我尝试的是:我试图朝着将字符串作为变量"处理"的方向发展,然后显示它。我唯一不知道的是如何切割变量。

我现在拥有的:

@echo off
:re
set a=%RANDOM%%RANDOM%%RANDOM%%RANDOM%%RANDOM%%RANDOM%
<Limiting code>
echo %a%
goto re

使用〜语法

%variable:~num_to_skip%
%variable:~num_to_skip,num_to_keep%

返回前5个字符

set a=%a:~0,5%

您可以使用负数

仅返回最后5个字符

set a=%_a:~-5%

,由于%random%生成的数字范围为0..32767,因此对所隐含长度产生的任何数字中的1和2都会有很大的偏见(原始帖子中的6 6 (。

要克服这一偏见,请尝试

set "generated="
set /a length=6
:again
set /a selected=%random%
if %selected% geq 30000 goto again
set "generated=%generated%%selected:~-1%"
set /a length-=1
if %length% neq 0 goto again

只有最后一个数字累积的 n 时间和随机数30000及以上被忽略,因此范围为0..29999。

此例程可能会生成领先的0 s。取决于如何使用生成的数字,这可能很重要,因为批次将带有领先0的数字字符串视为八月number。

最新更新