批量存储Powershell命令输出为变量



我需要使用下面的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%

最新更新