将批处理变量保存到文本文件中

12

我正在尝试将批处理变量保存到文本文件中。我目前有以下代码:

@echo off

Set var=6
@echo %var%>txt.txt

For /f "tokens*" %%i in (txt.txt) do @echo %%i
Pause

这段代码应该会将数字6保存在变量var中,然后将这个变量写入到文本文件中。我想要这么做是为了将用户输入保存到文本文件中,以便在批处理程序终止时保留这些变量。

2个回答

17

重定向存在一个小问题。您正在重定向“流”,它们的编号为0-9。0代表“标准输入”(STDIN),1代表“标准输出”(STDOUT),2代表“错误输出”(STDERR)。

如果您在没有设置流号的情况下使用重定向符号>,它会默认为“1”。

因此,echo text>txt.txt只是echo text 1>txt.txt的简写。

现在变得棘手了: echo 6>txt.txt并不会将“6”回显到文件中,而是尝试将“流6”(为空)重定向到文件中。标准输出echo is off会输出到屏幕上,因为“Stream1”没有被重定向。

解决方法:

如果您想要重定向一个数字或者以数字结尾的字符串,请使用另一种语法:

>txt.txt echo 6

另一种方法是:echo 6 1> txt.txt 或者 @echo %var% 1>txt.txt(在原始示例中)。验证输出的另一种方法是:type txt.txt - Johan
@Johan:两种替代方案都会向文件中写入额外的空格(这是不必要的,也可能会引起问题)。"真正的"替代方案是(echo 6)>txt.txt(echo %var%)>txt.txt - Stephan

4
使用set命令获取文件内容:
set /p var=<filename

使用echo命令将内容输出到文件中:

@echo Contents Of File > "FileName"

要在文件末尾添加另一行,请使用以下命令:

@echo Contents Of File >> "FileName"

此外,将命令放在单独的行上或在同一行上使用“&&”连接它们。

1
我使用@echo %var%>txt.txt,但是我只得到批处理文件说echo已关闭。 - JoerassicPark
use: >txt.txt echo %var% - Kman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接