Войти

Показать полную графическую версию : [решено] Копирование первой и последней строки из файла


Elven
21-05-2014, 21:19
Интрига раскрыта в названии темы. Есть файл с черт его знает каким количеством строк нужно взять первую и последнюю строку и записать в другой файл.

Georgio
21-05-2014, 23:41
@echo off
set "in=source.txt"
set "out=destination.txt"
for /f "usebackq delims=" %%i in ("%in%") do echo %%i>"%out%"& goto:#
:#
for /f "usebackq delims=" %%i in ("%in%") do set "last_string=%%i"
for /f "delims=" %%i in ("%last_string%") do echo %%i>>"%out%"
exit /b

Elven
22-05-2014, 09:54
Georgio, спасибо. Ночью нечто подобное и сам написал, но так, определенно, изящнее.

megaloman
22-05-2014, 10:24
Georgio, А если так? @echo off
set "in=source.txt"
set "out=destination.txt"
for /f "usebackq delims=" %%i in ("%in%") do echo %%i>"%out%"& goto:#
:#
for /f "usebackq delims=" %%i in ("%in%") do set "last_string=%%i"
echo %last_string%>>"%out%"
или так (начиная со второго For)- а вдруг в файле окажется одна строка? for /f "usebackq skip=1 delims=" %%i in ("%in%") do set "last_string=%%i"
IF not "%last_string%"=="" echo %last_string%>>"%out%"

Georgio
22-05-2014, 19:51
echo %last_string%>>"%out%" »

megaloman, не рекомендую, т. к. будут проблемы со спецсимволами. Можно использовать "setlocal enabledelayedexpansion", но тогда будут проблемы с восклицательными знаками и тем текстом, который находится между ними. Можно также с помощью "set /p="%last_string%"<nul>>"%out%"", но тогда будут проблемы со строками, начинающимися со знака равенства, со строками со спецсимволами в сочетании с непарными кавычками, а в некоторых версиях интерпретатора будут игнорироваться начальные пробелы. Таким образом, лучшим вариантом является именно тот, что я написал.


а вдруг в файле окажется одна строка? »

Есть файл с черт его знает каким количеством строк »

megaloman
23-05-2014, 19:08
Georgio, не рекомендую, т. к. будут проблемы со спецсимволами.вы правы, Ваш способ надёжнее, проверил.
А насчёт одной строки - это чистейшая перестраховка с моей стороны, вредная привычка заморачиваться вопросами: а что если ...

Iska
23-05-2014, 19:55
megaloman, не согласен. Это не «вредная» привычка, а умение корректно ставить и решать реальные задачи. Знание основ практического программирования. Так что, подобная привычка очень даже полезна и весьма необходима.




© OSzone.net 2001-2012