【问题标题】:Read custom txt line with Batch [duplicate]使用批处理读取自定义 txt 行 [重复]
【发布时间】:2013-09-07 11:22:02
【问题描述】:

我有那个代码:

@echo off
FOR /F "tokens=* skip=3" %%A IN (abc.txt) DO (echo.%%A)
pause

abc.txt中:

a
b
c
d
e
f
g
h
i
j
k
l
m
n
ñ
o
p
q
r
s
t
u
v
w
x
y
z

我只想看第三行,不想再读了……

我该怎么做? :/

【问题讨论】:

  • 检查我写的这个工具:->ss64.org/viewtopic.php?id=1707 。我上一篇文章中的FOR 版本更可取。还有一个帮助。它非常强大,甚至可以阅读特别的内容!&%..等符号

标签: file text batch-file line


【解决方案1】:
@echo off
set /a "skip=%~1" || exit /b

if %skip% gtr 0 (set skip=skip=%skip%) else (set skip=)
set "value="
for /f "usebackq %skip% delims=" %%A in ("abc.txt") do (
  set "value=%%A"
  goto :done
)
:done
echo value=%value%

FOR /F 不支持"skip=0",因此循环前的 if 语句。

【讨论】:

    【解决方案2】:

    哇!我已经解决了:

    @echo off
    set /a count=6
    if defined count for /f "skip=%count%tokens=1*delims=:" %%i in ('findstr /N "^" "abc.txt"') do if not defined value set "value=%%j"
    echo %value%
    

    输出:g

    :D

    【讨论】:

    • 这是一种复杂的方法,几乎​​可以得到一个有效的解决方案:) 它不适用于跳过(计数)为 0。
    • 对于非常大的文件也会很慢,因为在读取任何数据之前必须缓冲 FINDSTR 命令的整个输出。它可以通过管道连接到第二个 FINDSTR 来加快速度以寻找所需的线路,但该解决方案比所需的更复杂。
    【解决方案3】:

    这使用了一个名为 findrepl.bat 的辅助批处理文件,来自 - http://www.dostips.com/forum/viewtopic.php?f=3&t=4697

    type abc.txt |findrepl /o:3:3
    

    findrepl.bat 是您工具的便捷补充。
    在这种用法中,它将开始行和结束行设置为相同的数字 /o:S:E

    【讨论】:

      猜你喜欢
      • 2012-05-04
      • 2015-11-02
      • 1970-01-01
      • 2020-09-10
      • 1970-01-01
      • 2014-05-29
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      相关资源
      最近更新 更多