我正在尝试将变量加载并保存到文件中。
例如:
@echo off
set /a number=1
echo %number%>text.txt
如何将文本文件中的数字存储在变量中,例如variable1
?
答案 0 :(得分:6)
如aschipfl的mentioned一样,有两种实现方法:
set /P
(将变量重定向到文本文件并使用set /p
读取(文件))。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
,则解释器会将其“视为”数字。echo
空格中使用,因为如果echo %number%>txt
是<10 ,因为%number%
是STDIN,则{{1} }是STDOUT,0
是STDERR,从1
到2
的数字未定义。就像您要将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 (
放在一行中。
尝试根据此更改,看看是否可行。
-缩进还具有其他编程语言的可读性和调试性。