Войти

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


Freddy1984
25-05-2017, 17:49
Здравствуйте!
Есть вопрос по записи текста с новой строки.
Подробней.
Вот так:
> 1.txt echo первый
в файл запишется слово первый, это понятно.
А хотелось бы если это возможно сделать так: > 1.txt echo первый второй что бы второй был с новой строки.
Пробовал > 1.txt echo первый echo. второй так не получается.
Вообще возможно слово второй автоматом писать с новой строки следом за первый ?

greg zakharov
25-05-2017, 18:38
В чем сложность? В пакетном режиме:
@echo off
>out.txt (
echo:first
echo:second
echo:third
)
exit /b
В консоли:
E:\> type con>out.txt
first
second
third
^Z
^Z - это нажатие Ctrl+Z.

Iska
25-05-2017, 18:54
А хотелось бы если это возможно сделать так: > 1.txt echo первый второй что бы второй был с новой строки.

Вообще возможно слово второй автоматом писать с новой строки следом за первый ? »
Разве что процедурой оформить. Например:
@echo off
setlocal enableextensions enabledelayedexpansion

call :Write первый второй третий

endlocal
exit /b 0

:Write
set sValue=%1
if defined sValue (
echo %sValue%
shift
goto :Write
)
exit /b 0

Freddy1984
25-05-2017, 21:46
Благодарю вас ребята!
Самый первый вариант подошел просто идеально, вариант Iska беру на заметку как довольно интересный подход. :)

megaloman
25-05-2017, 22:07
@echo Off
>"file.txt" (FOR %%s IN (первый второй третий "у попа была собака" "поп её любил" сотый "сто двадцать пятый") DO Echo %%~s)
или то же самое @echo Off

Set "FileOut=file.txt"
Set "Str=первый второй третий "у попа была собака" "поп её любил" сотый"

>"%FileOut%" (FOR %%s IN (%Str%) DO Echo %%~s)

alpap
26-05-2017, 16:13
Пробовал > 1.txt echo первый echo. второй »
а надо было всего лишь добавить &

>1.txt (echo Первый& echo Второй& echo Третий)

sov44
23-08-2018, 18:19
Не нашел подходящей темы, спрошу тут. Нужно отдельном окне консоли запустить несколько команд, причём команды должны быть записаны с новой строки. т.е. преобразовать строку вида @echo off
start /wait cmd /c "echo 111& echo 222 &pause"
pause в что-то типа @echo off
start /wait cmd /c "^
echo 111 &^
echo 222 &^
pause"
pause

Iska
23-08-2018, 18:42
причём команды должны быть записаны с новой строки »
1. Должны быть записаны с новой строки в исходном пакетном файле или же должны быть записаны отображаться с новой строки в отдельном окне консоли?
2. Почему сие так принципиально? Какова цель и задача этого, для чего служит сие?

sov44
23-08-2018, 18:56
Iska, реальная строчка строчка start /wait cmd /c ..... получается слишком длинная, нужно её разбить с переносом команд. Оптимизация кода и косметика. Нужен принцип.

YuS_2
23-08-2018, 18:57
Нужно отдельном окне консоли запустить несколько команд, причём команды должны быть записаны с новой строки. »
непонятно зачем, но аналог:
@echo off
start "" /wait cmd /c (
echo 111
echo 222
pause
)
pause
правда нового окна, как раз, не будет.
А зачем, если не секрет?

sov44
23-08-2018, 19:11
YuS_2, основное окно консоли не хочу забивать лишней информацией. Например в основном окне консоли появилась строчка "подключение образа", а в новом окне консоли я контролирую процесс подключения. Но чтобы исключить лишнее мелькание окон, хочу чтобы в новом окне исполнялось последовательно несколько команд.

YuS_2
23-08-2018, 19:26
Но чтобы исключить лишнее мелькание окон, хочу чтобы в новом окне исполнялось последовательно несколько команд. »
видимо, тогда придется набор команд вытягивать в строку, иначе всё будет склеиваться в одно окно... cmd же, что с него взять? :)

Iska
23-08-2018, 20:27
sov44, к сожалению, средств управления консолью в пакетных файлах с гулькин нос.

Если я правильно Вас понял, новые строки требуются именно в оригинальном пакетном файле.

У меня получилось таким образом:
@echo off
setlocal enableextensions enabledelayedexpansion

title Parent console
start "" /wait "%comspec%" /c"title Child console #1& echo First line& echo Second line& echo Third line& pause"

start "" /wait "%comspec%" /c^
"title Child console #2 ^& ^
echo First line^& ^
echo Second line^& ^
echo Third line^& ^
pause"

endlocal
exit /b 0

Обратите внимание — мы экранируем символы &, дабы они были переданы в дочерний процесс, а не были обработаны текущим интерпретатором команд.
https://i.imgur.com/xfMKEIG.png

https://i.imgur.com/MtXxK5E.png
Стоит ли овчинка такой выделки — решать Вам.

sov44
23-08-2018, 21:17
Iska, благодарю, с картинками всё стало понятно. :up

YuS_2
24-08-2018, 07:34
Стоит ли овчинка такой выделки »
Дык, работает же! И обозначенная цель (свернутая строка команд плюс новое окно) достигнута, поэтому стоит, естественно.




© OSzone.net 2001-2012