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

时间:2016-06-10 21:39:40

标签: variables batch-file console command

好的,所以我有一个批处理程序,在我保存游戏时将我的角色的统计数据写入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"

看到我把这样写到文本文件中,以为我可以加载文件,它会将变量设置为文件的内容。

没有工作。如果您有任何疑问,请询问。我现在无法发布图片,但我想我已经明白了。

2 个答案:

答案 0 :(得分:1)

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

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

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

如何运作
for /f循环接受命令,文件或字符串(在本例中为文件)并逐行处理该事物的输出。

usebackq告诉for循环引号中的东西是一个文件 - 通常,传入for /f循环的引用字符串将被视为字符串而不是你的路径中有一个空格,需要引用,以便循环不会引发错误。

delims=告诉循环不要分隔(拆分)文件中的每一行。通常,一条线在空格上分开 - 空格和制表符。

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

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

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

在这种情况下,

%%A是您在文本文件中存储的set命令。由于批处理如何替换和评估文本,它实际上正在运行您存储的命令!

答案 1 :(得分:0)

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

@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 来加载这些变量。