CMD/BAT - [решено] echo без пустой строки

Аватара пользователя
letti

CMD/BAT - [решено] echo без пустой строки

Сообщение letti »

Добрый день!



при попытке передать информацию в файл (echo text >> file.txt) подставляется пустая последняя строка. Есть ли возможность удалить ту самую последнюю (пустую) строку ?
Аватара пользователя
letti

Re: CMD/BAT - [решено] echo без пустой строки

Сообщение letti »

Цитата letti:



Есть ли возможность удалить ту самую последнюю (пустую) строку ?
CMD/BAT - [решено] echo без пустой строки




Та самая строка формируется конечным символом перевода строки командой echo

Не знаю, зачем понадобилось убирать эту строку, т.к. при добавлении текста в этот файл командой >> (после удаления пустой строки, то бишь символа перевода строки), этот текст "склеится" с последней строкой... но, в принципе так:



Код:

Код: Выделить всё

>out.txt
Аватара пользователя
letti

Re: CMD/BAT - [решено] echo без пустой строки

Сообщение letti »

Цитата letti:



Есть ли возможность удалить ту самую последнюю (пустую) строку ?
CMD/BAT - [решено] echo без пустой строки




Удалить — нет. Не добавлять символы перевода строки и возврата каретки (0x0D, 0x0A) — да.



Токмо лучше наоборот — на всякий случай:



Код:

Код: Выделить всё

>>"out.txt" 
Аватара пользователя
Iska

Re: CMD/BAT - [решено] echo без пустой строки

Сообщение Iska »

Цитата Iska:



на всякий случай:
CMD/BAT - [решено] echo без пустой строки




если от такого: (>out.txt), да, (>>out.txt out.txt), хоть где не пиши запись в файл, спасет только:



Код:

Код: Выделить всё

>>out.txt 
Аватара пользователя
alpap

Re: CMD/BAT - [решено] echo без пустой строки

Сообщение alpap »

alpap, от первого. Особенно неприятно, когда номером потока оказывается часть содержимого переменной окружения или переменной цикла разбора: зараз и не обратишь внимания, что куда пропало.
Аватара пользователя
Iska

Re: CMD/BAT - [решено] echo без пустой строки

Сообщение Iska »

alpap, от первого. Особенно неприятно, когда номером потока оказывается часть содержимого переменной окружения или переменной цикла разбора: зараз и не обратишь внимания, что куда пропало.
Аватара пользователя
YuS_2

Re: CMD/BAT - [решено] echo без пустой строки

Сообщение YuS_2 »

Цитата Iska:



Удалить — нет. Не добавлять символы перевода строки и возврата каретки (0x0D, 0x0A) — да.
CMD/BAT - [решено] echo без пустой строки




При этом при выводе заранее узнать, какая строка последняя часто очень проблематично, зато узнать, первая ли это строка в файле (по отсутствию этого самого файла или при пересоздании этого файла при выводе первой строки) - нет проблем. Поэтому, чтобы текст не "склеивался":



Код:

Код: Выделить всё

>"out.txt" (<nul set /p sVar=текст1)
>>"out.txt" (Echo.&<nul set /p sVar=текст2)
>>"out.txt" (Echo.&<nul set /p sVar=текст3)

и так далее
Аватара пользователя
megaloman

Re: CMD/BAT - [решено] echo без пустой строки

Сообщение megaloman »

megaloman,

собственно изменять(ить) можно только последнюю строку вывода (вернее записи)

Код: Выделить всё

@echo off
>>"out.txt" (
 echo текст1
 echo текст2
 echo:& <nul set /p="текст3"
)
pause
Аватара пользователя
alpap

Re: CMD/BAT - [решено] echo без пустой строки

Сообщение alpap »

alpap,
Цитата alpap:



изменять(ить) можно только последнюю строку вывода
CMD/BAT - [решено] echo без пустой строки




Фишка моего предложения
Цитата megaloman:



заранее узнать,какая строка последняя часто очень проблематично, зато узнать, первая ли это строка в файле - нет проблем.
CMD/BAT - [решено] echo без пустой строки




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

То есть в первой строке записываем текст без Cr Lf на конце, а последующие строки пишем как Cr+Lf+Текст
Аватара пользователя
megaloman

Re: CMD/BAT - [решено] echo без пустой строки

Сообщение megaloman »

Цитата megaloman:



Фишка моего предложения
CMD/BAT - [решено] echo без пустой строки




фишку понял и предложу вариант с почти одинаковым написанием строк, разница лишь в нумерации, несложно добавить в поток, а может изначально будет или будет не лишней для кого-то по задаче:

Код: Выделить всё

@echo off
set "$_1=текст1"
set "$_2=текст2"
set "$_3=текст3"
>"out.txt" (for /f "tokens=2* delims=_=" %%a in ('set $_') do @(
  if %%a==1 (
   <nul set /p="%%b"
  ) else (
   echo:& <nul set /p="%%b"
  )
 )
)
pause
Ответить

Вернуться в «Скриптовые языки администрирования Windows»