批处理文件中的奇怪崩溃

时间:2017-06-30 21:34:03

标签: batch-file

我正在开始最有可能成为我正在制作的批量游戏中最乏味的部分:地图。但是,我的位置检查系统存在一些问题。

:location_check_k
if %k_loc%==1 goto k_1
if %k_loc%==2 goto k_2
if %k_loc%==3 goto k_3
if %k_loc%==4 goto k_4
if %k_loc%==5 goto k_5
if %k_loc%==6 goto k_6
if %k_loc%==7 goto k_7
if %k_loc%==8 goto k_8
if %k_loc%==9 goto k_9
if %k_loc%==10 goto k_10
if %k_loc%==11 goto k_11
if %k_loc%==12 goto k_12
if %k_loc%==13 goto k_13
if %k_loc%==14 goto k_14
if %k_loc%==15 goto k_15
if %k_loc%==16 goto k_16
if %k_loc%==17 goto k_17
if %k_loc%==18 goto k_18
if %k_loc%=="" goto error
if %k_loc% GTR 18 goto error

:k_1
::Gate
set "dc="
type data\mapdata\maps\kinallen\maps\kinallen_ex_s
set\p dc=
if %dc%=up goto k_4
goto k_1

到目前为止,这就是我为系统所做的一切,但它每次都会崩溃。我已经尝试删除部分代码以找出错误发生的位置,但没有任何效果。这些变量都不是假的。我试过在这些行之前加入echo %k_loc%。它应该返回“1”。 type命令中提到的文件也存在。删除某些块也没有任何作用。摆脱:location_check_k部分仍然会导致崩溃。仅使用:k_1echo good替换pause部分中的所有内容仍然会导致崩溃。

注意事项:

- k_(number)是我用作地图位置值的内容。每个不同的数字都会输入相同的地图,并将您放在不同的位置。

- 变量dc是我用于“方向命令”的缩写。

- 这是通过call命令启动的。我通过这种方式保持代码更有条理。

- 其他位置(k_2 ... k_18)尚未写出。

不确定这些是否会影响任何事情,但无论如何我都会列出它们。关于我做错了什么的想法?

1 个答案:

答案 0 :(得分:0)

代码中有更多错误:

if "%k_loc%"=="" goto error

永远不会执行goto

if not defined k_loc goto error

或更好

if %dc%=up goto k_4

提到了set / p,但是改变了

if /i "%dc%"=="up"

GoTo k_%k_loc% 2>Nul||GoTo error

如果你打算做打字练习的计划,你可以按照上面的方式进行,但是@Compo建议有18个goto命令的更有效的方法

For /l %%c in (1 1 18) Do If "%k_loc%"=="%%a" Goto k_%%a

{{1}}