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