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

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

Freddy1984 25-05-2017 17:49 2739601

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

greg zakharov 25-05-2017 18:38 2739615

В чем сложность? В пакетном режиме:
Код:

@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 2739619

Цитата:

Цитата Freddy1984
А хотелось бы если это возможно сделать так: > 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 2739666

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

megaloman 25-05-2017 22:07 2739678

Еще вариант
Код:

@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 2739863

Цитата:

Цитата Freddy1984
Пробовал > 1.txt echo первый echo. второй »

а надо было всего лишь добавить &
Код:

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

sov44 23-08-2018 18:19 2828170

Не нашел подходящей темы, спрошу тут. Нужно отдельном окне консоли запустить несколько команд, причём команды должны быть записаны с новой строки. т.е. преобразовать строку вида
Код:

@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 2828180

Цитата:

Цитата sov44
причём команды должны быть записаны с новой строки »

1. Должны быть записаны с новой строки в исходном пакетном файле или же должны быть записаны отображаться с новой строки в отдельном окне консоли?
2. Почему сие так принципиально? Какова цель и задача этого, для чего служит сие?

sov44 23-08-2018 18:56 2828185

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

YuS_2 23-08-2018 18:57 2828186

Цитата:

Цитата sov44
Нужно отдельном окне консоли запустить несколько команд, причём команды должны быть записаны с новой строки. »

непонятно зачем, но аналог:
Код:

@echo off
start "" /wait cmd /c (
echo 111
echo 222
pause
)
pause

правда нового окна, как раз, не будет.
А зачем, если не секрет?

sov44 23-08-2018 19:11 2828190

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

YuS_2 23-08-2018 19:26 2828194

Цитата:

Цитата sov44
Но чтобы исключить лишнее мелькание окон, хочу чтобы в новом окне исполнялось последовательно несколько команд. »

видимо, тогда придется набор команд вытягивать в строку, иначе всё будет склеиваться в одно окно... cmd же, что с него взять? :)

Iska 23-08-2018 20:27 2828214

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

Обратите внимание — мы экранируем символы &, дабы они были переданы в дочерний процесс, а не были обработаны текущим интерпретатором команд.
Скрытый текст



Стоит ли овчинка такой выделки — решать Вам.

sov44 23-08-2018 21:17 2828220

Iska, благодарю, с картинками всё стало понятно. :up

YuS_2 24-08-2018 07:34 2828262

Цитата:

Цитата Iska
Стоит ли овчинка такой выделки »

Дык, работает же! И обозначенная цель (свернутая строка команд плюс новое окно) достигнута, поэтому стоит, естественно.


Время: 00:10.

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