【问题标题】:Set= log.txt in batch批量设置=log.txt
【发布时间】:2009-06-01 02:19:07
【问题描述】:

我有一个 log.txt 文件,其中包含:

MyName

我的批次:

@echo off
set name= [log.txt]

在 [log.txt] 部分,它应该从 log.txt 文件中读取“MyName”,将其设置为“name”。

怎么做?

【问题讨论】:

    标签: batch-file set logging text-files


    【解决方案1】:

    你也可以使用

    set /p name=<log.txt
    

    这可能会被认为更短且不那么难看。

    【讨论】:

    • 不知道:-)。这两种方法实际上都有效,但是对于包含多于一行的文件有不同的效果。
    • 不错。与 bash 相比,我们无法经常使用 cmd 向标准输入提供文件,我会记住这一点。
    【解决方案2】:

    在cmd.exe中,只有这种丑陋的方式:

    @echo off
    for /f "usebackq tokens=* delims=" %%i in ("log.txt") do (
        set name=%%i
    )
    

    【讨论】:

    • 顺便说一句,您可以从那里删除 usebackq 和 tokens 选项,因为您不使用它们。
    • @Joey tokens=* delims= 比单个 delims= 更快
    • @Joey:如果你解析长行,tokens=* delims= 变体只需要大约 70% 的时间
    • @jeb:我刚刚测试过,但无法辨别出明显的时差。对您来说,排长队到底是什么?
    • @Joey:我测试了7000个字符的行长,讨论在tokens and delims
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 2011-03-01
    • 1970-01-01
    • 2020-03-31
    相关资源
    最近更新 更多