我需要使用下面的Powershell命令,并使用命令提示符(批处理)将输出数字设置为变量
Powershell命令:
( (1..6) | ForEach-Object { Get-Random -Minimum 0 -Maximum 9 } ) -join {}
批处理代码:
set "genCode=Powershell -Command "( (1..6) | ForEach-Object { Get-Random -Minimum 0 -Maximum 9 } ) -join {}""
echo %genCode%
我知道Powershell命令在cmd下工作,因为我已经测试过了。但是,当我在变量中使用命令时,它会终止脚本并给出一个错误。
看起来ColDog5044比我先使用了FOR命令,但是为了速度起见,我建议使用-NoProfile参数。
此代码分为两部分。前一半是完全批量的,后一半将产生最多16个随机数字-只需将$DigitCount = 16
更改为所需的数量。
@ECHO OFF
SET "Rand1=000%RANDOM%"
SET "Rand2=000%RANDOM%"
SET "genCode=%Rand1:~-3%%Rand2:~-3%"
ECHO [%genCode%]
FOR /F "USEBACKQ DELIMS=" %%C IN (`PowerShell -NonInteractive -NoProfile -Command "$DigitCount = 16; $RandString = [string](Get-Random -Minimum 100000000000000000 -Maximum 1000000000000000000); Write-Host $($RandString.Substring($RandString.Length-($DigitCount+1),$DigitCount)) -NoNewline"`) DO SET "genPSCode=%%C"
ECHO [%genPSCode%]
纯净的batch-file
而不需要powershell
@echo off
set /a rnd=%random%*53144
echo %rnd:~0,6%
Powershell命令解决方案:
for /F "delims=" %%c in (' powershell "( (1..6) | ForEach-Object { Get-Random -Minimum 0 -Maximum 9 } ) -join {}" ') do set "genCode=%%c"
echo %genCode%