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