Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Копирование первой и последней строки из файла

Ответить
Настройки темы
CMD/BAT - [решено] Копирование первой и последней строки из файла

Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Интрига раскрыта в названии темы. Есть файл с черт его знает каким количеством строк нужно взять первую и последнюю строку и записать в другой файл.

Отправлено: 21:19, 21-05-2014

 

Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@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
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:41, 21-05-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Georgio, спасибо. Ночью нечто подобное и сам написал, но так, определенно, изящнее.

Отправлено: 09:54, 22-05-2014 | #3


Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


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%"

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 22-05-2014 в 10:46.


Отправлено: 10:24, 22-05-2014 | #4


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


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


Цитата megaloman:
а вдруг в файле окажется одна строка? »
Цитата Elven:
Есть файл с черт его знает каким количеством строк »
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:51, 22-05-2014 | #5


Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 23-05-2014 в 19:30.


Отправлено: 19:08, 23-05-2014 | #6


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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

Отправлено: 19:55, 23-05-2014 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Копирование первой и последней строки из файла

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Копирование первой строки из файла MultiMax Скриптовые языки администрирования Windows 27 08-03-2017 14:14
CMD/BAT - [решено] Копирование имени файла и определённой строки из него в другой файл Liquid Ocelot Скриптовые языки администрирования Windows 10 05-07-2013 09:35
Доступ - [решено] Копирование из командной строки с повышенными правами ffs2001 Microsoft Windows 2000/XP 3 31-03-2012 21:22
CMD/BAT - [решено] Имя файла из строки копируемого файла. Seryoga204 Скриптовые языки администрирования Windows 20 16-03-2011 21:15
2003/XP/2000 - [решено] Документ Microsoft Word - Колонтитулы, кроме первой и последней страницы zvezda_t Microsoft Office (Word, Excel, Outlook и т.д.) 5 17-01-2011 11:12




 
Переход