好的,所以我有一个批处理程序,在我保存游戏时将我的角色的统计数据写入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"
看到我把这样写到文本文件中,以为我可以加载文件,它会将变量设置为文件的内容。
没有工作。如果您有任何疑问,请询问。我现在无法发布图片,但我想我已经明白了。
答案 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 来加载这些变量。