Batch file 以显示%%不存在

Batch file 以显示%%不存在,batch-file,Batch File,这段代码需要知道,如果我键入“go west”并且“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 %

这段代码需要知道,如果我键入“go west”并且“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

这可能是一个有点奇怪的代码,但我已经测试过了,它确实有效。将此添加到转到%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并退出,然后由fail.bat重新启动。
希望这有帮助!

来源:

我找到了答案

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
如果玩家试图向北移动,则转到“移动”


有没有办法在不创建新文件的情况下执行此操作?我不这么认为,因为当batch找不到要求转到的内容时,它会退出,并且当您使用| |时。后面的命令不能包含goto或call。除非您要添加每个可能的号码,这需要一段时间。除了使用| |之外,还必须有不同的方法。我只是不想有两个批处理文件。现在可以了。实际上,您可以使用
|start%~n0&exit
自动重启。这可能行得通。
:moven
echo this does not exist
pause
goto play