2017-01-04 92 views
-2

我想保存一个游戏,它会卡住。当我按ENTER它会留下一个空白点。有人在我的剧本中看到错误吗?批处理如果存在命令

@echo off 
:saveload 
title player movement 
color 0f 
cls 
set /a health=10 
if exist saves.txt (
    < saves.txt (
     set /p weapon= 
     set /p armorh= 
     set /p armorc= 
     set /p armorl= 
     set /p armorf= 
     set /p bow= 
     set /p gold= 
     set /p dmgweapon= 
     set /p dmgbow= 
     set /p prtah= 
     set /p prtac= 
     set /p prtal= 
     set /p prtaf= 
     set /p name= 
    ) 
    goto :varsetup 
) else (
    echo to first begin we need to get your name! 
    set /p name=What is your name?: 
    (
     set /p armorh=n/a 
     set /p armorc=n/a 
     set /p armorl=n/a 
     set /p armorf=n/a 
     set /p bow=n/a 
     set /p gold=10 
     set /p dmgweapon=1 
     set /p dmgbow=0 
     set /p prtah=0 
     set /p prtac=0 
     set /p prtal=0 
     set /p prtaf=0 
     set /p name=%name% 
    ) > saves.txt 
    goto :saved 
) 
:saved 
+0

嗯这似乎是我的评价不包含正确的代码,我没有包括四个空格,但它不会工作,如果有人能解决这个问题我会很感激的是 – Juggler

+1

您需要正常文本和代码块之间的空白行。无论如何,在'set/p name ='之后的'else'分支中,而不是'set/p foo = bar',只要我有你的意图,你需要声明'echo bar'; '如果存在'应该不是这里的问题... – aschipfl

+0

非常感谢! – Juggler

回答

0

set /p name=后您的else分支,而不是set /p foo=bar需要说明echo bar,据我得到了你的意图。 if exist不应该是这里的问题。这里是固定的代码:

@echo off 
:saveload 
title player movement 
color 0f 
cls 
set /a health=10 
if exist "saves.txt" (
    < "saves.txt" (
     set /p weapon= 
     set /p armorh= 
     set /p armorc= 
     set /p armorl= 
     set /p armorf= 
     set /p bow= 
     set /p gold= 
     set /p dmgweapon= 
     set /p dmgbow= 
     set /p prtah= 
     set /p prtac= 
     set /p prtal= 
     set /p prtaf= 
     set /p name= 
    ) 
    goto :varsetup 
) else (
    echo to first begin we need to get your name! 
    set /p name=What is your name?: 
    (
     echo n/a 
     echo n/a 
     echo n/a 
     echo n/a 
     echo n/a 
     echo 10 
     echo 1 
     echo 0 
     echo 0 
     echo 0 
     echo 0 
     echo 0 
     echo %name% 
    ) > "saves.txt" 
    goto :saved 
) 
:saved