Мне нужно скопировать нижние 16 строк из текстового файла в другой текстовый файл. Мне нужно сделать эту процедуру для всех клиентов. В месте расположения клиента текстовый файл будет общим, но нижние 16 строк важны для подтверждения установки пакета.
BAT файл для чтения и копирования нижних 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
)