2013-10-31 102 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!