Пакетный скрипт для отображения от 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