是否可以使用%random%
命令转到批处理文件上的随机位置?例如:
set /p input=%random%
if %input%==[whatever the random number generated... (example 1004] goto a
if %input%==[a different number generated by %random% (example 203)] goto b
答案 0 :(得分:1)
是的,并且无需将数字转换为标签。只需使用随机数作为标签。这是一个简单的演示,随机选择5个GOTO标签中的一个:
@echo off
setlocal
set /a label=%random% %% 5
goto %label%
:0
echo random 0 abc
exit /b
:1
echo random 1 def
exit /b
:2
echo random 2 ghi
exit /b
:3
echo random 3 jkl
exit /b
:4
echo random 4 mno
exit /b
您可以使用相同的技术来调用随机标签。这是一个演示10个随机CALL的演示。
@echo off
setlocal enableDelayedExpansion
for /l %%N in (1 1 10) do (
set /a label=!random! %% 5
call :!label!
)
exit /b
:0
echo random 0 abc
exit /b
:1
echo random 1 def
exit /b
:2
echo random 2 ghi
exit /b
:3
echo random 3 jkl
exit /b
:4
echo random 4 mno
exit /b
- 样本输出 -
random 2 ghi
random 4 mno
random 3 jkl
random 2 ghi
random 2 ghi
random 3 jkl
random 1 def
random 4 mno
random 3 jkl
random 1 def
也许您的脚本具有不同的上下文,并且在每个上下文中您都有随机结果。您的标签可以包含上下文后跟数字。
@echo off
setlocal enableDelayedExpansion
for /l %%N in (1 1 10) do (
set /a A=!random!%%5, B=!random!%%3
call :A!A!
call :B!B!
echo(
)
exit /b
:A0
echo context A random 0 abc
exit /b
:A1
echo context A random 1 def
exit /b
:A2
echo context A random 2 ghi
exit /b
:A3
echo context A random 3 jkl
exit /b
:A4
echo context A random 4 mno
exit /b
:B0
echo context B random 0 xyz
exit /b
:B1
echo context B random 1 123
exit /b
:B2
echo context B random 2 apple orange banana
exit /b
- 样本输出 -
context A random 3 jkl
context B random 0 xyz
context A random 1 def
context B random 1 123
context A random 4 mno
context B random 2 apple orange banana
context A random 2 ghi
context B random 1 123
context A random 1 def
context B random 2 apple orange banana
context A random 3 jkl
context B random 2 apple orange banana
context A random 0 abc
context B random 1 123
context A random 2 ghi
context B random 1 123
context A random 2 ghi
context B random 1 123
context A random 4 mno
context B random 1 123
答案 1 :(得分:0)
是的,这取决于你对批处理文件上的随机点的看法意味着什么。您提供的代码几乎可以使用,这是更新版本:
set NUMBER=%random%
if %NUMBER%==1004 goto A
if %NUMBER%==203 goto B
:A
REM Do something
GOTO :EOF
:B
REM Do something else
您无法跳转到批处理文件中的随机位置,但根据随机值,您可以转到预定义的标签。如果随机值介于Z
和X
之间,您甚至可以定义一些跳转到标签Y
的规则。
答案 2 :(得分:0)
set /a number=%random% %% 5
goto destination%number%
goto
目的地,目的地1,目的地2,目的地3,目的地4之一,如果这是您的意图。