用於從文字檔案中刪除標題行的批次檔或命令列

用於從文字檔案中刪除標題行的批次檔或命令列

我正在嘗試從 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

相關內容