批处理 - 从文件加载时出错

时间:2017-08-06 20:41:59

标签: batch-file

从文件加载时遇到问题,我似乎无法找到问题,因为它在我的代码中的其他地方都有效。 无论如何这里是代码

set /p viewsave= 
if exist save%viewsave%.txt (
set /p level=<save%viewsave%.txt
echo save%viewsave%
echo you are on level %level%
pause

它可以找到save%viewsave%并且我知道它知道level = 0因为当使用echo时它说

set /p level= 0<save1.txt

但是当我回音

时它不回应它
you are on level %level%

它只是没有显示任何内容

这是一个以某种方式工作的例子

set /p saves=<savesnr.txt
echo you have %saves% saves

1 个答案:

答案 0 :(得分:0)

您需要使用enabledelayedexpansion并替换:

echo you are on level %level%

使用:

echo you are on level !level!

EnableDelayedExpansion

  

延迟扩展将导致批处理文件中的变量   在执行时而不是在解析时扩展,这个选项是   使用SETLOCAL EnableDelayedExpansion命令启用。

     

当延迟扩展有效时,可以使用变量引用变量   !variable_name!(除了正常的%variable_name%

     

执行批处理文件时,命令处理器(CMD.exe)将执行   解析完整的行和完整的复合命令。变量是   在线的命令之前,只用它们的值替换一次   被执行。

来源enabledelayedexpansion

进一步阅读