如何将具有多个变量的文本文件应用到批处理控制台

How to apply a text file with multiple variables to the batch console

好的,我有一个批处理程序,可以在我保存游戏时将角色的统计信息写入 txt 文件。但是我无法正确加载这些统计数据。我想也许如果我用控制台命令和语法正确保存它们,我可以使用 type 命令,它会 运行 命令将控制台上的变量设置为 txt 文件中的变量。有没有一种简单的方法,就像将所有变量写入txt文件但相反?

正在写入的变量示例代码:

if not exist "%~dp0\Users" md "Users" (
Echo set CharName=%UserCharacter%
Echo set Level=%Level%
Echo set Health=%Health%
Echo set ExpCap=%ExpCap%
)> "%~dp0\Users\%UserCharacter%.txt"

看到我这样写到文本文件中,以为我可以加载文件并将变量设置为文件所具有的内容。

没有成功。如果您有任何问题,请提问。我现在不能 post 图片,但我想我明白了我的意思。

你真的很接近。而不是 type,运行 通过 for 循环的文本文件。

for /f "usebackq delims=" %%A in ("%~dp0\Users\%UserCharacter%.txt") do %%A

您拥有的 set 命令将自动 运行。

工作原理
for /f 循环接收命令、文件或字符串(在本例中为文件)并逐行处理该内容的输出。

usebackq 告诉 for 循环引号中的内容是文件 - 通常,传递到 for /f 循环中的带引号的字符串将被视为字符串,但是因为你的路径中有一个 space ,所以需要引用它以便循环不会抛出错误。

delims= 告诉循环不要分隔(拆分)文件中的每一行。通常,一条线被分割成白色space - spaces 和制表符。

%%A 是包含字符串中第一个定界标记的变量。但是,由于我们告诉循环不要分隔字符串,因此 %%A 包含整个字符串。

"%~dp0\Users\%UserCharacter%.txt" 是你的文件。

do 告诉循环,此后代码块其余部分的所有内容(该行的其余部分或该行 ( 与第一个 [=23= 之间的任何内容) ] 在下一行)应该在循环仍在进行时执行。

%%A 在这种情况下是您存储在文本文件中的 set 命令。由于批处理替换和评估文本的方式,它实际上是 运行ning 您存储的命令!

您可以使用以下批处理文件保存变量:

@Echo off

if not exist "Users" md "Users"
if exist Users\%UserCharacter%.bat del Users\%UserCharacter%.bat
>>Users\%UserCharacter%.bat Echo @Echo off
>>Users\%UserCharacter%.bat Echo set CharName=%UserCharacter%
>>Users\%UserCharacter%.bat Echo set Level=%Level%
>>Users\%UserCharacter%.bat Echo set Health=%Health%
>>Users\%UserCharacter%.bat Echo set ExpCap=%ExpCap%
>>Users\%UserCharacter%.bat Echo Echo Variables loaded

Echo Variables saved

这会在 Users 子文件夹中创建一个名为 %UserCharacter%.bat 的批处理文件。 例如,如果您的角色名称是 Virtusal,则您可以通过键入 Users\Virtusal.bat.

来加载这些变量