如何在 Windows 中使用 DOS 提取文本文件的第 n 行?

问题描述 投票:0回答:1

我有一堆文本文件,我需要从中提取第 9 行并将其写入另一个文件中。

我知道我可以使用

for %%f in (*.txt) de ( )
迭代特定目录中的文件,并且我知道我可以使用
echo
将提取的任何内容附加到不同的文件中,但我不知道如何具体提取第 n 行当前文件(即第 9 行)。

windows batch-file
1个回答
0
投票

您还可以迭代命令(序列)的输出:

for /f "delims=" %%a in ('dir') do echo %%a

您只需找到第 n 行即可,使用

/N
findstr
开关即可轻松实现:

findstr /n "^" file.txt

(找到每行都有一个开头(每行都有)并编号)

过滤所需的行:

findstr /n "^" file.txt |findstr /b "9:"

(过滤以

9:
开头的每一行)

并使用

for
循环来剖析行号和实际行:

for /f "tokens=1* delims=:" %a in ('findstr /n  "^" file.txt ^|findstr /b "9:"') do @echo %b

使用另一个

for
循环来处理多个文件:

for %%f in (*.txt) do (
    for /f "tokens=1* delims=:" %%a in ('findstr /n "^" "%%f" ^|findstr /b "9:"') do @echo %%b
)

并将整个输出重定向到一个新文件:

@echo off
(for %%f in (*.txt) do (
    for /f "tokens=1* delims=:" %%a in ('findstr /n "^" "%%f" ^|findstr /b "9:"') do @echo %%b
))>file.out
© www.soinside.com 2019 - 2024. All rights reserved.