Пакетный скрипт для отображения от n до m строк из текстового файла и сохранения нового текстового файла

Я нашел код (см. Ниже), но у меня нет возможности кодировать. Я хочу выбрать нужную часть (строки) из текстового файла и сохранить в другом текстовом файле! Спасибо за твою помощь!

КОД:

@echo OFF
:: Get the number of lines in the file
set LINES=0
for /f "delims==" %%I in (data.txt) do (
set /a LINES=LINES+1
)

:: Print the last 10 lines
set /a LINES=LINES-10
more +%LINES% < data.txt

1 ответ

Примечание. Следующее отражает тело вашего вопроса и содержание кода, игнорируя только текст заголовка вопроса.

Вот скрипт, который будет делать то, что делает ваш код вопроса, за исключением того, что он выводит в файл.

Выходной файл будет записан в текущий каталог и получит имя Name -Last X.ext. Где Name и .ext будут совпадать с тем же именем и расширением, что и ваш исходный файл, а X будет числом строк вывода.

Единственные изменения, которые вам когда-либо нужно будет сделать, это исходный файл в строке 3 и последнее число строк, которые нужно вывести в строке 4.

@Echo Off

Set "SrcFile=data.txt"
Set "LastNum=10"

Rem If SrcFile doesn't exist or LastNum isn't at least 1 exit the script
If Not Exist "%SrcFile%" Exit/B
If 1%LastNum% Lss 11 Exit/B

Rem Calculate line number for first line of output
Set "#=-%LastNum%"
For /F "Delims=" %%A In ('Find /V /C ""^<"%SrcFile%"') Do Set/A #+=%%A

Rem Re-calculation for files with less lines than LastNum
If %#% Lss 0 Set/A "LastNum+=#, #=0"

Rem Create destination filename for output
For %%A In ("%SrcFile%") Do Set "$=%%~nA-Last%LastNum%%%~xA"

Rem Output to destination file
More +%#% "%SrcFile%">"%$%"

Обратите внимание, что More изменит вкладки s на последовательность пробелов s

Другие вопросы по тегам