Пакетный файл или командная строка для удаления строк заголовков из текстовых файлов

Пакетный файл или командная строка для удаления строк заголовков из текстовых файлов

Я пытаюсь удалить первые 3 строки из 10 000 текстовых файлов. Используя:

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

Связанный контент