我正在尝试从 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