2013-10-31 44 views
1

如果有人能够帮助我修复脚本,我希望在字符串的末尾添加一个4位数的随机数,本质上它是一个脚本为电子邮件地址读取一个csv文件,然后创建一个powershell文件供我运行,但与im有关的部分是附加到密码字符串的随机4位数字,请参阅下文,如果我现在运行脚本,它将运行错误,但没有追加4位的随机数,谁能帮助我确定它的小东西我在想念感谢将随机数添加到生成临时密码的批处理文件

进水口


@echo off & setlocal EnableDelayedExpansion 
for /F "delims=" %%j in ('type "Input.csv"') do (
set /A RND=%RANDOM% %% 8889 + 1111 
echo.Set-MsolUser -UserPrincipalName %%j -StrongPasswordRequired $false 
echo.Set-MsolUserPassword -userPrincipalName %%j -NewPassword "TTech%RND%*" -ForceChangePassword $false 
echo.Set-MsolUser -UserPrincipalName %%j -PasswordNeverExpires $true 
echo. 
) >> "Output.txt" 

回答

0

使用此为您的随机数:

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的回答,你知道问题是使用延迟变量语法而不是标准的parens。我把他的答案和我的结果包含在一些很容易重用的小函数中。

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 

希望帮助

+0

这并没有解决这个问题。 – dbenham

2

您需要更改%var%!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位数字。

0

这会给你一个随机的4位数字:

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

或用一个循环中启用延迟扩展:

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