【问题标题】:How to get a file Variables in Batch-File如何在批处理文件中获取文件变量
【发布时间】:2018-05-31 20:14:38
【问题描述】:

假设一个 Batch 游戏将您的进度保存在一个 file.bat 文件中,当我们编辑我们得到的那个文件时:

set Health=100
set Sword=Gold

我在批处理文件中使用了这个命令,但它不起作用:

for /f "eol=- delims=" %%a in (file.bat) do set "%%a"
echo Your health is %Health%
echo Your sword is made of %Sword%

它留空。

但是如果我创建了一个像上面这样的文件但删除了set(只有 Health=100 和 Sword=Gold 没有设置),它可以工作并给我变量 Health 和 Sword,但是当添加了 set 命令时它没有用,如果有人知道解决方案,请告诉我,谢谢!

我想要一个给我变量的命令,我不想只是从文件中删除 set 命令,因为如果我这样做了,保存 bat 文件的游戏将在提取文件中的变量可从您离开游戏的地方继续。

【问题讨论】:

  • 如果设置命令在文件中,你实际上是在做set "set Health=100",只需输入) do %%a
  • 所以我会把命令改成这个? for /f "eol=- delims=" %%a in (file.bat) do "%%a"
  • 我只会使用不带引号的%%a
  • 非常感谢@LotPings 你真的帮了我:)

标签: batch-file variables command


【解决方案1】:

游戏生成提示:

如果您保留一个字符作为您想要保存的变量的前缀(例如,我想要保存/重新加载的所有变量都以# 开头)那么您只需要保存游戏是

set #>"mygamefile.txt"

你需要重新加载一个游戏是

for /f "usebackqdelims=" %%a in ("mygamefile.txt") do set "%%a"

要删除所有 # 变量(在重新加载游戏之前有用)使用

for /f "delims==" %%a in ('set # 2^>nul') do set "%%a="

【讨论】:

  • 删除") do set "%%a" 中的set 。作为替代方案,您可以 (echo @echo off & set #)>"mygamefile.bat" 并简单地重新加载:call "mygamefile.bat"
  • @stephan 请解释你的理由。代码与发布的一样完美。
  • 文本文件包含像 set Health=100 这样的行(参见问题的 cmets)。你添加另一个set
  • @Stephan OP 的方法过于复杂。我建议的方法取代了那个方法。
  • 我同意,但 OP 明确表示`我不想只是从文件中删除 set 命令`
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-15
  • 1970-01-01
相关资源
最近更新 更多