用于从文本文件中删除标题行的批处理文件或命令行

用于从文本文件中删除标题行的批处理文件或命令行

我正在尝试从 10,000 个文本文件中删除前 3 行。使用:

for %f in (*.txt) do more +3 “%f” >> output.txt

我可以删除标题并将文件夹中的所有文件合并为一个新文件。但是,我想将文件分开,只是不保留标题行。这可以吗?

答案1

您无法覆盖源文件。而且由于可能存在重叠,您无法自动生成新名称。但您可以将没有标题的文件保存到临时文件夹中,然后将其移到源文件上。它将类似于:

@echo off
for %%f in (*.txt) do (
    more +3 "%%f" > "%TEMP%\%%f"
    move /y "%TEMP%\%%f" "%%f" > nul
)
echo Done.

或者与命令行中的一个命令相同:

@for %f in (*.txt) do @(more +3 "%f" > "%TEMP%\%f" && move /y "%TEMP%\%f" "%f" > nul)

答案2

如果您的环境允许,那么请考虑使用 Powershell,这样您就不需要使用临时文件和文件夹。

Foreach ($file in Get-ChildItem -Path ".\" -Filter *.txt ) {
    $content = Get-Content $file.FullName | Select-Object -Skip 3;
    Set-Content -Path $file.FullName -Value $content;
}

答案3

只需在另一个目录中创建单独的文件。

md sub
for %f in (*.txt) do more +3 “%f” > sub\%f

相关内容