【问题标题】:Saving a batch variable in a text file将批处理变量保存在文本文件中
【发布时间】:2015-03-23 20:36:13
【问题描述】:

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

@echo off

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

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

应该将6保存到变量var中,然后将变量写入文本文件。我想这样做是为了将用户输入保存到文本文件中,这样当批处理程序终止时,它将保存变量。

【问题讨论】:

    标签: variables batch-file save io-redirection


    【解决方案1】:

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

    如果使用重定向符号> 不带流号,则默认为“1”。

    所以echo text>txt.txt 只是echo text 1>txt.txt 的缩写

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

    解决方案:

    如果您尝试重定向数字或以数字结尾的字符串,只需使用不同的语法:

    >txt.txt echo 6
    

    【讨论】:

    • 替代方案:echo 6 1> txt.txt,或原始示例中的@echo %var% 1>txt.txt。验证输出的替代方法:type txt.txt.
    • @Johan:两种选择都会在文件中写入额外的空间(这是不必要的,并且可能会造成麻烦)。 “真正的”替代品是 (echo 6)>txt.txt 或 `(echo %var%)>txt.txt
    【解决方案2】:

    使用 set 命令获取文件的内容:

    set /p var=<filename
    

    使用 echo 命令放入文件:

    @echo Contents Of File > "FileName"
    

    要在文件末尾追加另一行,请使用:

    @echo Contents Of File >> "FileName"
    

    另外,将命令放在不同的行中,或者在同一行中在它们之间使用“&&”。

    【讨论】:

    • 我使用 @echo %var%>txt.txt,我只是得到批处理文件说 echo 已关闭
    猜你喜欢
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    • 2019-08-16
    • 2017-06-15
    相关资源
    最近更新 更多