【问题标题】:Batch - error when loading from a file批处理 - 从文件加载时出错
【发布时间】:2018-01-14 03:24:42
【问题描述】:

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

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

【问题讨论】:

  • 使用enabledelayedexpansionecho you are on level !level!
  • 这有效,你能把它写在答案下面,以便我可以将它标记为已解决吗?
  • 答案已写。

标签: batch-file


【解决方案1】:

你需要使用enabledelayedexpansion并替换:

echo you are on level %level%

与:

echo you are on level !level!

启用延迟扩展

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

当延迟扩展生效时,可以使用 !variable_name!(除了普通的%variable_name%

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

来源enabledelayedexpansion


进一步阅读

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-29
    • 2011-08-19
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    • 2014-08-07
    • 2010-11-12
    • 1970-01-01
    相关资源
    最近更新 更多