此代码无效。这应该生成一个包含随机特征和背景故事的名称。我不知道为什么它不起作用。
@echo off
:top
echo ----------------------------------------
echo random name genorator
echo ----------------------------------------
echo 1 genorate name
echo 2 add more info
echo 3 what is this
set /p rand=
if %rand% == 1 goto first
if %rand% == 2 goto 2
if %rand% == 3 goto 3
:first
if %random% == 0 set fname=tony
if %random% == 1 set fname=pamb
if %random% == 2 set fname=ape
if %random% == 3 set fname=bob
if %random% == 4 set fname=jonathan
if %random% == 5 set fname=dave
if %random% == 6 set fname=avery
if %random% == 7 set fname=felica
if %random% == 8 set fname=herman
if %random% == 9 set fname=elana
cls
echo your new name is %fname%
pause
:2
exit
:3
exit
当我按1时,它说“你的新名字是”。
答案 0 :(得分:3)
输入:
echo %random%
看看它给你的东西。它很可能会给你一个高于9的数字。例如:
c:\pax> echo %random%
1644
现在想想在这种情况下你的名字会被设定为什么。因为if
条件都不是真的,所以它根本不会被更改,因此在运行脚本之前它将保持为。
如果您想获得0到9范围内的随机数并根据该名称设置名称,您可以使用:
set /a "num = %random% %% 10"
if %num% == 0 set fname=tony
rem ... and so on
另请注意,如果您的名单可能会变长,您可能希望使用cmd
(a)等更高级的功能,例如"阵列&#34 ;.例如,以下脚本显示了如何执行此操作:
@echo off
setlocal enableextensions enabledelayedexpansion
rem This is the list of names to use.
set namelist=tony pam george bob john dave avery felica herman
set namelist=!namelist! elana pax guido henry fortescue
rem Construct the array, consisting of a base name with "_<index>" suffix.
set /a "count = 0"
for %%n in (!namelist!) do (
set fname_!count!=%%n
set /a "count = count + 1"
)
rem Use modulo to select random index.
set /a "idx = !random! %% count"
rem Use double indirection to get actual name.
for /f %%a in ('echo fname_!idx!') do echo !%%a!
endlocal
(a)是的,我知道很难想到cmd
和advanced
中使用的词语相同的句子,但它确实有一些有用的,如果鲜为人知的特征: - )