将变量保存在文本文件中

时间:2019-02-24 15:01:09

标签: batch-file

我正在尝试将变量加载并保存到文件中。
例如:

@echo off
set /a number=1
echo %number%>text.txt

如何将文本文件中的数字存储在变量中,例如variable1

2 个答案:

答案 0 :(得分:6)

如aschipfl的mentioned一样,有两种实现方法:

  1. 使用set /P(将变量重定向到文本文件并使用set /p读取(文件))。
  2. 使用for /F循环解析文件。

由于Tiw已经使用mentioned的第一种方法,因此我将只讨论第二种方法。您应该这样做:

@echo off
set "number=1"
(echo %number%)>text.txt
for /F "delims= eol=" %%A IN (text.txt) do set "variable1=%%A"

请注意:

    /a中的
  • set选项仅用于执行算术运算。这并不意味着如果您有/a,则解释器会将其“视为”数字。
  • 为安全起见添加了括号;不要在txt文件中的echo空格中使用,因为如果echo %number%>txt是<10 ,因为%number%是STDIN,则{{1} }是STDOUT,0是STDERR,从12的数字未定义。就像您要将STDIN / STDOUT / STDERR / UNDEFINED都没有发送到文件一样。

进一步阅读:

答案 1 :(得分:4)

您的代码将导致问题,最好更改为:

@echo off
set /a number=1
>text.txt echo %number%

最后一行的另一种方式是:

echo %number% 1>text.txt

1的意思是STDOUT,这就是为什么您的代码不会将1写入文件text.txt的原因。

并将文件读入variable1

set /p variable1=<text.txt

请注意,如果文件中有多行,则只会将第一行读入variable1

从评论开始,并作了一些改动:

if not exist "%~dp0settings.gsf" ( 
    echo.>"%~dp0settings.gsf" 
    goto :createsave 
) else ( 
    echo Reading your savefile... 
    set /p lang=<settings.gsf
)

%~dp0将以\结尾,因此无需添加其他\
您应该关闭else块,最好缩进并将) else (放在一行中。
尝试根据此更改,看看是否可行。
 -缩进还具有其他编程语言的可读性和调试性。