显示%%不存在

时间:2014-06-02 17:09:43

标签: batch-file

这段代码需要知道,如果我输入"去西部"和#34; p"不存在它会告诉我它不存在。这是代码。

:type
set /p menu=type:
if "%menu%" == "go north" goto north
if "%menu%" == "go south" goto south
if "%menu%" == "go east" goto east
if "%menu%" == "go west" goto west

:north
set /a p=%p%+50
goto %p%

:south
set /a p=%p%-50
goto %p%

:east
set /a p=%p%+1
goto %p%

:west
set /a p=%p%-1
goto %p%

如果代码的编号为300,则输入" go west" " P"等于301,需要说这个数字不存在。我不想让这个号码成为类型,并且在它下面说它不存在。例如,

:301 
echo does not exist
pause
goto play

2 个答案:

答案 0 :(得分:1)

这可能是一个奇怪的代码,但我测试了它,它确实有效。将其添加到goto %p%,它应该有效:

goto %p% || start fail.bat&exit

您需要创建另一个名为“fail.bat”的文件,该文件需要包含以下代码:

echo Does not exist
pause>nul
start (Whatever your file is called).bat
exit

基本上,两行(||)表示在找到子程序失败时会执行以下操作。因此,如果找不到p的变量,它将在fail.bat重新启动之前启动失败并退出。
希望这可以帮助!

来源:http://ss64.com/nt/goto.html

答案 1 :(得分:0)

我找到了答案。

set movew=0
set movee=0
set moven=0
set moves=0
This is set up before the ":type".

:north
if %moven% equ 1 goto moven
set /a p=%p%+50
goto %p%

:south
if %moves% equ 1 goto moves
set /a p=%p%-50
goto %p%

:east
if %movee% equ 1 goto movee
set /a p=%p%+1
goto %p%

:west
if %movew% equ 1 goto movew
set /a p=%p%-1
goto %p%

这样可以确保玩家朝那个方向移动,计算机不会添加或减去%p%。

:300
set moven=1
echo
pause
goto play

如果玩家尝试向北移动,则转到" moven"。

:moven
echo this does not exist
pause
goto play