BAT файл для чтения и копирования нижних 16 строк из текстового файла в другой?

Мне нужно скопировать нижние 16 строк из текстового файла в другой текстовый файл. Мне нужно сделать эту процедуру для всех клиентов. В месте расположения клиента текстовый файл будет общим, но нижние 16 строк важны для подтверждения установки пакета.

Ответ 1

more команда может использоваться для извлечения последних n строк:

  • Если файл someFile.txt содержит 2000 строк, то последние 16 строк могут быть извлечены с помощью ( "/E + n: начало отображения первого файла в строке n" ):

    more /e +1984 someFile.txt > lastLines.txt
    
  • Число строк в файле someFile.txt можно найти как:

    for /f %%i in ('find /v /c "" ^< someFile.txt') do set /a lines=%%i
    
  • Вызов more затем становится (еще для этого примера, последние 16 строк):

    set /a startLine=%lines% - 16
    more /e +%startLine% someFile.txt > lastLines.txt
    

Ответ 2

Вы можете загружать порты DOS для большинства команд Unix (например здесь - выберите любой набор команд, который вам нравится, включая tail).

После загрузки просто используйте tail -16 filename.txt

Преимущество (чтобы компенсировать усилия по загрузке/распаковке) заключается в том, что вы получаете целый BUNDLE действительно хороших инструментов командной строки Unix для использования.

Ответ 3

Я адаптировал этот полезный код, чтобы добавить вместе 51 файл и сохранить 12-строчный заголовок первого файла следующим образом:

REM Append 51 files and retain 12 line header of first file
REM  ------------------------------------------------------

REM Set number of files to combine    
set Nmbrfls=51   

REM copy the first file with the header 
copy file_1.txt combined.txt

REM Loop through the other 50 files (start at #2) appending to the combined
REM file using a temporary file to capture all but the the 12 header lines
REM than append the temporary file to the combined on each loop

for /l %%i in (2,1,%Nmbrfls%) do (
more /e +13 file_%%i.txt > temp.txt
copy /b combined.txt + temp.txt combined.txt
del temp.txt
)