Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   CRLF для cmd-файла (http://forum.oszone.net/showthread.php?t=306065)

ВасилийП 30-09-2015 15:17 2559343

CRLF для cmd-файла
 
Есть cmd-файл и хочется по результатам его работы вывести вразумительный текст для пользователя
Уже замучил Гугл и Яндекс этими вопросами - безрезультатно, поэтому пришёл сюда :)

...
set strOut=результат выполнения операции 1
...
set strOUT=%strOUT%CrLfрезультат выполнения операции 2
...
set strOUT=%strOUT%CrLfрезультат выполнения операции N

:EndCMD
echo %strOUT%

И чтобы сообщение выглядело так:
результат выполнения операции 1
результат выполнения операции 2
результат выполнения операции N

Alt+13 и Alt+10 пробовал, получил отлуп: "результат выполнения операции 2" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

Чувствую, что должно быть что-то позволяющее объединять строки с переходом на новую строку, но никак не могу найти :(

megaloman 30-09-2015 15:57 2559359

Вместо
Код:

...
 set strOut=результат выполнения операции 1
 ...
 set strOUT=%strOUT%CrLfрезультат выполнения операции 2
 ...
 set strOUT=%strOUT%CrLfрезультат выполнения операции N

сделать
Код:

...
Echo результат выполнения операции 1
 ...
Echo результат выполнения операции 2
 ...
Echo результат выполнения операции N

А в чём смысл их объединять? Из принципа? Так гораздо нагляднее - если что-то делается, то видно, на каком Вы шаге.

ВасилийП 30-09-2015 16:14 2559368

Спасибо.
Как обойти это - есть варианты, ОЧЕНЬ хочется сделать это именно объединением строк

Потому что в конце работы эта итоговая строка будет выводиться на экран, если файл был запущен пользователем. Или будет отправляться в лог-файл если был вызван из другого бат-файла

Не верится, что нет возможности вставить код перевод строки

megaloman 30-09-2015 16:25 2559372

Код:

...
set strOut="результат выполнения операции 1"
...
set strOUT= %strOUT% "результат выполнения операции 2"
...
set strOUT= %strOUT% "результат выполнения операции N"
...
...
FOR %%i IN (%strOUT%) DO Echo %%i

Если нельзя, но очень хочется, то можно

alpap 30-09-2015 16:29 2559376

Так и делайте так, Выводите
Код:

echo ...1>>log.txt
...
echo ...2>>log.txt
...

и получите в log.txt именно
Цитата:

Цитата ВасилийП
И чтобы сообщение выглядело так:
результат выполнения операции 1
результат выполнения операции 2
результат выполнения операции N »


ВасилийП 30-09-2015 16:45 2559386

Цитата:

Цитата alpap
и получите в log.txt именно »

И если добавить
Код:

if "%1" EQU "" type log.txt
то получится то, что надо! :)

PS: а перед началом работы проверять наличие этого log.txt и удалять его :)

ВасилийП 30-09-2015 17:05 2559397

Цитата:

Цитата megaloman
Код:

FOR %%i IN (%strOUT%) DO Echo %%i
»

Пробую Ваш вариант и пока никак не могу убрать апострофы :(

"результат выполнения операции 1"
"результат выполнения операции 2"
"результат выполнения операции N"

megaloman 30-09-2015 17:17 2559406

Если не надо кавычки, то

FOR %%i IN (%strOUT%) DO Echo %%~I

Или, если в файл

del log.txt
FOR %%i IN (%strOUT%) DO Echo %%~I >>log.txt

ВасилийП 30-09-2015 17:25 2559410

Цитата:

Цитата megaloman
FOR %%i IN (%strOUT%) DO Echo %%~i »

Спасибо!
Какими только извращениями я не пытался убрать эти апострофы... А всех делов было на одну тильду! :up

Вы могли бы подсказать нормальный справочник по командам cmd?

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

Вопрос уже ставший чисто теоретическим - неужели авторы не предусмотрели возможности штатными средствами вставлять в строки символы управления?

Вот никак не могу в это поверить - столько всего накрутили, а про CrLf забыли?!

Iska 30-09-2015 18:21 2559431

Цитата:

Цитата ВасилийП
Вопрос уже ставший чисто теоретическим - неужели авторы не предусмотрели возможности штатными средствами вставлять в строки символы управления? »

Дело за малым — кто будет обрабатывать эти управляющие конструкции. ANSY.SYS остался в далёком прошлом.

Хотите современного — переходите на PowerShell, там «их есть».

ВасилийП 01-10-2015 10:58 2559636

Ну, нет, так нет...

Цитата:

Цитата Iska
переходите на PowerShell, там «их есть». »

На большинстве компьютеров Windows XP, так что с Power Shell'ом я пока повременю :)

В основном делаю на vbscript'е, а cmd использую чиста ради брутального интерфейса - народ кипятком писает от белых буковок на чёрном экране :)

Iska 01-10-2015 12:43 2559674

Цитата:

Цитата ВасилийП
На большинстве компьютеров Windows XP, так что »

…так что: Windows Management Framework (Windows PowerShell 2.0, WinRM 2.0 и BITS 4.0).

ВасилийП 01-10-2015 16:48 2559757

Спасибо, я читал про Power Shell

Но пока большая часть компьютеров (из ~700шт) не будет на Win 7 и выше, мне нет смысла смотреть в сторону Power Shell'а

На Windows XP его надо ставить отдельно, к нему нужен .Net какой-то версии, а у меня нет ни полномочий, ни желания заниматься этой работой. Пока вполне хватает возможностей cmd, vbscript'а и WMI

Похожая ситуация была и во времена Windows 98, когда scripthost не устанавливался по умолчанию (надо было отдельно выбирать галочкой при установке), и тогда я вполне обходился одними bat-никами

А сейчас делаю на cmd больше из спортивного интереса, чем из какой-то реальной потребности (и людям радость от белых буковок и мне какое-то разнообразие :) )

megaloman 01-10-2015 17:19 2559768

ВасилийП,
Цитата:

Цитата ВасилийП
Вы могли бы подсказать нормальный справочник по командам cmd? »

Их есть здесь

ВасилийП 02-10-2015 09:14 2559913

Спасибо


Время: 11:00.

Время: 11:00.
© OSzone.net 2001-