【问题标题】:What delimiter to use in FOR loop for reading lines?在 FOR 循环中使用什么分隔符来读取行?
【发布时间】:2011-07-17 04:54:32
【问题描述】:

我有一个包含以下行的 txt 文件

jfo3 93jfl
lvls 29fdj
nskd jfuwe
xlkw eklwe

我正在尝试逐行读取文件,并对其进行处理。我应该使用什么分隔符?

我在这里使用的分隔符分别读取每个单词。

@echo off
setlocal EnableDelayedExpansion
for /f "delims=" %%x in (lines.txt) do (
    echo %%x
)

【问题讨论】:

    标签: windows batch-file


    【解决方案1】:

    这对我来说是逐行读取的:

    for /f "delims=" %x in (lines.txt) do echo %x
    

    【讨论】:

    • @sameold:在批处理文件中,您需要使用%% 而不是%。此答案中的变体可直接在命令行上使用。
    • @Joey 是正确的。上面的脚本在命令行上运行。
    • 为什么"delims=" 用于换行分隔符?答:它将delims 的值设置为空,这意味着循环不使用字符(换行符除外)作为分隔符
    【解决方案2】:

    问题与 delims 无关,而与令牌有关:

    for /f "tokens=*" %%x in (lines.txt) do echo %%x
    

    【讨论】:

    • 并非如此,因为 "tokens=*" 和 "delims=" 产生几乎相同的结果。与 "tokens=*" 一样,分隔符仍然处于活动状态,它们会从每一行中删除前导空格和制表符
    • 如果你不指定"delims=",那么它将默认为"delims= "(一个空格),它会修剪标记之间的额外空格,这意味着你没有得到真正的行。 "delims=" 本身将默认为 "tokens=1",但由于它会抓取整行,因此您只需要一个令牌。
    【解决方案3】:

    如果这是您的输入文件:

    abc,def

    ghi,jkl

    mno,pqr

    然后使用

    FOR /F "tokens=1,2,3 delims=," %%i in (test.txt) do (whatever u want) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-16
      • 1970-01-01
      • 2012-12-24
      • 2010-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-19
      相关资源
      最近更新 更多