У меня есть пакетный скрипт, который генерирует случайные числа от 1 до 10000.
Мой пакетный скрипт
@echo off
cls
SET /A RAND=%RANDOM%%%10000+1
echo %RAND%
echo.
pause
Выходы тока
2532 (4 digits)
253 (3 digits)
25 (2 digits)
2 (1 digits)
Ожидаемые результаты
2432 (4 digits)
3431 (4 digits)
9282 (4 digits)
8812 (4 digits)
Вопрос
Мне нужно, чтобы случайное число состояло только из 4 цифр, а не из 1, 2 или 3 цифр, а всегда из 4.
решение1
Пакетный скрипт Windows для генерации случайного 4-значного числа
Вы можете использовать пакетный скрипт сОкначтобы легко выполнить эту задачу, как я объясню ниже.
По сути это будет...
- ИспользоватьPowerShell-ы Получить-Случайнофункция для генерации случайного числа
- Значение случайного числа будет находиться в диапазоне с
0000-9999
использованием параметров-Maximum
и-Minimum
Использовать"0" Пользовательский спецификатор — "{0:0000} -f $fRandom" сPowerShellи .СЕТЬчтобы гарантировать, что значение случайного числа содержит начальные нули, гарантируя, что оно всегда будет состоять из 4 цифр
Результат вPowerShell
echo
В качестве выходных данных используется случайное числовое значениеИспользоватьДЛЯ /Фцикл для получения результата выполненногоPowerShellсценарий (случайное число) внутри него и сохраните этот результат как переменную для использования в пакетном скрипте для ваших нужд (
%RAND%
)
Пакетный скрипт
Если случайное число не может состоять из 4-значных значений с префиксом в виде нулей, например 0001
, 0011
, , или 0111
вы можете изменить-Minimum 1000
как это вместо этого, но случайные цифры 1-999
будут опущены, поэтому значение1000
это то, что вы хотите использовать для -Minimum
параметра, если это так.
@ECHO ON
SET PSScript=%Temp%\~tmpRandom4Digit.ps1
IF EXIST "%PSScript%" DEL /Q /F "%PSScript%"
ECHO $fRandom = Get-Random -Maximum 9999 -Minimum 0000>>"%PSScript%"
ECHO $Random = "{0:0000}" -f $fRandom>>"%PSScript%"
ECHO ECHO $Random>>"%PSScript%"
SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0
CD /D "%PowerShellDir%"
FOR /F "DELIMS=" %%A IN ('Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'"') DO SET "RAND=%%A"
echo %RAND%
EXIT
Дополнительные ресурсы
решение2
Простым решением может быть взятие последней цифры из четырех случайно сгенерированных чисел.
set "RAND=%random:~-1%%random:~-1%%random:~-1%%random:~-1%"
решение3
Вы можете использовать мой пакетный скрипт:
@echo off
if "%1" == "/?" (
echo Usage:
echo.
echo random [min] [max]
echo random /?
echo.
echo Can be used to generate a random number between [min] - [max] and displays the output in the RDM variable.
echo./? can be used to display help
echo.
echo Examples:
echo.
echo random 1 5 - Generates a random number between 1 - 5
echo random /? - Displays help
)
if not "%1" == "/?" set /a rdm=(%random%*%2/32768)+%1
Затем перетащите папку C:\Windows\System32 и введите «random /?» для синтаксиса.
решение4
Вам просто нужно скорректировать минимальное значение и диапазон вашего первоначального решения.
@echo off
cls
SET /A RAND=%RANDOM%%%9000+1000
echo %RAND%
echo.
pause