Batch file 将随机数添加到生成临时密码的批处理文件中

Batch file 将随机数添加到生成临时密码的批处理文件中,batch-file,random,digit,Batch File,Random,Digit,如果有人能帮我修复我的脚本,我会非常感激,我想在字符串的末尾添加一个4位随机数,本质上是一个脚本,它读取电子邮件地址的csv文件,然后创建一个powershell文件供我运行,但我遇到的问题是密码字符串中附加的随机4位数字,请看下面,如果我现在运行的脚本,它运行没有错误,但没有4位随机数附加,有人可以帮助我确定它的一些小我错过了谢谢 马铃薯 将其用于您的随机数: Set max=9999 Set min=1000 Set /A rand=%random% %% (max - min + 1)+

如果有人能帮我修复我的脚本,我会非常感激,我想在字符串的末尾添加一个4位随机数,本质上是一个脚本,它读取电子邮件地址的csv文件,然后创建一个powershell文件供我运行,但我遇到的问题是密码字符串中附加的随机4位数字,请看下面,如果我现在运行的脚本,它运行没有错误,但没有4位随机数附加,有人可以帮助我确定它的一些小我错过了谢谢

马铃薯



将其用于您的随机数:

Set max=9999
Set min=1000
Set /A rand=%random% %% (max - min + 1)+ min
Echo %rand%
请记住,在for循环中,需要使用delayedexpansion并转义括号

 Set max=9999
 Set min=1000

 for /l %%a in (1,1,10) do (
 Set /A rand=!random! %% ^( max - min + 1 ^) + min
 Echo.!rand!
 )
 exit /b
根据Magoo的回答,您知道问题在于使用延迟变量语法而不是标准参数。我把他的答案和我的答案归纳成几个易于重用的小函数

call :RandomRange 1000 9999 ret
Echo %ret%

call :RandomRange2 ret
echo %ret%
exit /b

:RandomRange min max ret
@echo off & setlocal enabledelayedexpansion
Set /A rand=!random! %% (%2 - %1 + 1) + %1
endlocal & set %3=%rand%
exit /b

:RandomRange2 ret
@echo off & setlocal enabledelayedexpansion
set rnd=000!random!
set rnd=!rnd:~-4!
endlocal & set %1=%rnd%
exit /b

希望这有帮助

您需要将
%var%
更改为
!瓦尔
访问有效的
delayedexpansion
变量的动态值

set /A RND=!RANDOM! %% 8889 + 1111
将变量
RND
设置为1111..9999

echo.Set-MsolUserPassword -userPrincipalName %%j -NewPassword "TTech!RND!*" -ForceChangePassword   $false
然后将结果值附加到
TTech

或者,试试看

set RND=000!RANDOM!
...
echo.Set-MsolUserPassword -userPrincipalName %%j -NewPassword "TTech!RND:~-4!*" -ForceChangePassword   $false

这将构造一个字符串
000
+
0
32767
,然后使用
TTech
之后的最后4个字符,这样您将得到前导的零填充4位数字。

这将为您提供一个随机的4位数字:

set num=%random%%random%%random%%random%
set num=%num:~-4%
或者在循环内启用延迟扩展:

set num=!random!!random!!random!!random!
set num=!num:~-4!

这并没有解决这个问题。
set num=!random!!random!!random!!random!
set num=!num:~-4!