Войти

Показать полную графическую версию : CRLF для cmd-файла


ВасилийП
30-09-2015, 15:17
Есть 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
Вместо
...
set strOut=результат выполнения операции 1
...
set strOUT=%strOUT%CrLfрезультат выполнения операции 2
...
set strOUT=%strOUT%CrLfрезультат выполнения операции N
сделать...
Echo результат выполнения операции 1
...
Echo результат выполнения операции 2
...
Echo результат выполнения операции N
А в чём смысл их объединять? Из принципа? Так гораздо нагляднее - если что-то делается, то видно, на каком Вы шаге.

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

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

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

megaloman
30-09-2015, 16:25
...
set strOut="результат выполнения операции 1"
...
set strOUT= %strOUT% "результат выполнения операции 2"
...
set strOUT= %strOUT% "результат выполнения операции N"
...
...
FOR %%i IN (%strOUT%) DO Echo %%i

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

alpap
30-09-2015, 16:29
Так и делайте так, Выводите echo ...1>>log.txt
...
echo ...2>>log.txt
... и получите в log.txt именно И чтобы сообщение выглядело так:
результат выполнения операции 1
результат выполнения операции 2
результат выполнения операции N »

ВасилийП
30-09-2015, 16:45
и получите в log.txt именно »
И если добавить
if "%1" EQU "" type log.txt

то получится то, что надо! :)

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

ВасилийП
30-09-2015, 17:05
FOR %%i IN (%strOUT%) DO Echo %%i »
Пробую Ваш вариант и пока никак не могу убрать апострофы :(

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

megaloman
30-09-2015, 17:17
Если не надо кавычки, то

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

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

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

ВасилийП
30-09-2015, 17:25
FOR %%i IN (%strOUT%) DO Echo %%~i »
Спасибо!
Какими только извращениями я не пытался убрать эти апострофы... А всех делов было на одну тильду! :up

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

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

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

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

Iska
30-09-2015, 18:21
Вопрос уже ставший чисто теоретическим - неужели авторы не предусмотрели возможности штатными средствами вставлять в строки символы управления? »
Дело за малым — кто будет обрабатывать эти управляющие конструкции. ANSY.SYS остался в далёком прошлом.

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

ВасилийП
01-10-2015, 10:58
Ну, нет, так нет...

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

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

Iska
01-10-2015, 12:43
На большинстве компьютеров Windows XP, так что »
…так что: Windows Management Framework (Windows PowerShell 2.0, WinRM 2.0 и BITS 4.0) (https://support.microsoft.com/ru-ru/kb/968929).

ВасилийП
01-10-2015, 16:48
Спасибо, я читал про Power Shell

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

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

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

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

megaloman
01-10-2015, 17:19
ВасилийП,Вы могли бы подсказать нормальный справочник по командам cmd? » Их есть здесь (http://forum.oszone.net/thread-130222.html)

ВасилийП
02-10-2015, 09:14
Спасибо




© OSzone.net 2001-2012