Batch file 批处理代码在txt中保存批处理游戏

Batch file 批处理代码在txt中保存批处理游戏,batch-file,Batch File,我正在使用一个代码来保存和加载游戏的进展到一个文本文件。当信息被保存时,文本中的信息正确显示,但是当我运行游戏时,如果文本编码是一个句子,它只显示该句子的第一个单词。 例子: 这是代码 (echo moves=%moves%)>> save1.txt (echo ttsu=%ttsu%)>> save1.txt 这是文本文件显示的内容 moves=0 ttsu=The troll sees you. 这是load命令 if exist save1.txt ( for

我正在使用一个代码来保存和加载游戏的进展到一个文本文件。当信息被保存时,文本中的信息正确显示,但是当我运行游戏时,如果文本编码是一个句子,它只显示该句子的第一个单词。 例子: 这是代码

(echo moves=%moves%)>> save1.txt
(echo ttsu=%ttsu%)>> save1.txt
这是文本文件显示的内容

moves=0
ttsu=The troll sees you.
这是load命令

if exist save1.txt (
for /f %%a in (save1.txt) do set %%a
goto play
这是命令提示符显示的内容

0
The
我的问题是,有没有办法让游戏读完整的句子

if exist save1.txt (
  for /f "tokens=* delims=" %%a  in (save1.txt) do set "%%a"
  goto play
)
=
是一个标准分隔符(edit这里的分隔符是空格。
=
不是
for/f
)的分批分隔符,并自动作为分隔符包含在
for/f
选项中。使用
delims=
可以将其排除。
令牌=*
将确保获得所有令牌(即整行)。使用
%%a
只能获得第一个令牌(与
FOR
命令的其他用法不同,
FOR
可以有许多令牌,如果有,可以使用
%%b
%%c
等访问下一个令牌)

编辑添加的测试:

@echo off
setlocal
:::test code
(
    (echo(moves=0)
    (echo(ttssu=The troll sees you)
)>save1.txt
:::end of test
@if exist save1.txt @(
  for /f "usebackq tokens=* delims=" %%a  in ("save1.txt") do  set "%%a"
  goto play
)
:play
:::testcode
set ttssu
set moves
:::endof test code
endlocal

没有错误消息吗?%errorlevel%是多少?@user3325754-请确保您使用的是我上次编辑的内容。首先,我已用打字错误发布了我的答案。@user3325754从命令提示符调用该文件,查看是否有错误消息errors@user3325754文件
save1
是否存在?SET
命令的输出是什么?如果您更多代码将更容易看到正在进行的操作。更正-默认的/F分隔符是空格和制表符。相等符号不是默认的/F分隔符。但是,它是批处理分析器的标记分隔符,但与FOR/F无关。