使用批处理命令%random%来获取文件上的随机位置

时间:2015-02-25 15:58:45

标签: batch-file

是否可以使用%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

3 个答案:

答案 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

您无法跳转到批处理文件中的随机位置,但根据随机值,您可以转到预定义的标签。如果随机值介于ZX之间,您甚至可以定义一些跳转到标签Y的规则。

答案 2 :(得分:0)

set /a number=%random% %% 5
goto destination%number%

goto目的地,目的地1,目的地2,目的地3,目的地4之一,如果这是您的意图。