After a sleepless night and after reading all answers herein, after reading a lot of SS64 > CMD and after a lot of try & error I found:
The (almost) Ultimate Solution
TL;DR
… for early adopters.
Important! |
---|
Use a text editor for C&P that supports Unicode, e.g. Notepad++! |
Set Newline Environment Variable …
… in the Current CMD Session
Important! |
---|
Do not edit anything between ‘= ‘ and ‘^ ‘! (There’s a character in between though you don’t see it. Neither here nor in edit mode. C&P works here.) |
:: Sets newline variables in the current CMD session
set n=^&echo:
set nl=^&echo:
… for the Current User
Important! |
---|
Do not edit anything between (the second) ‘␣ ‘ and ‘^ ‘! (There’s a character in between though you don’t see it. Neither here nor in edit mode. C&P works here.) |
:: Sets newline variables for the current user [HKEY_CURRENT_USEREnvironment]
setx n ^&echo:
setx nl ^&echo:
… for the Local Machine
Important! |
---|
Do not edit anything between (the second) ‘␣ ‘ and ‘^ ‘! (There’s a character in between though you don’t see it. Neither here nor in edit mode. C&P works here.) |
:: Sets newline variables for the local machine [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerEnvironment]
setx n ^&echo: /m
setx nl ^&echo: /m
Why just almost?
It does not work with double-quotes that are not paired (opened and closed) in the same printed line, except if the only unpaired double-quote is the last character of the text, e.g.:
-
works:
""echo %n%...after "newline". Before "newline"...%n%...after "newline"
(paired in each printed line) -
works:
echo %n%...after newline. Before newline...%n%...after newline"
(the only unpaired double-quote is the last character) -
doesn’t work:
echo "%n%...after newline. Before newline...%n%...after newline"
(double-quotes are not paired in the same printed line)Workaround for completely double-quoted texts (inspired by Windows batch: echo without new line):
set BEGIN_QUOTE=echo ^| set /p !=""" ... %BEGIN_QUOTE% echo %n%...after newline. Before newline...%n%...after newline"
It works with completely single-quoted texts like:
echo '%n%...after newline. Before newline...%n%...after newline'
Added value: Escape Character
Note |
---|
There’s a character after the ‘= ‘ but you don’t see it here but in edit mode. C&P works here. |
:: Escape character - useful for color codes when 'echo'ing
:: See https://learn.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences#text-formatting
set ESC=
For the colors see also https://imgur.com/a/EuNXEar and https://gist.github.com/gerib/f2562474e7ca0d3cda600366ee4b8a45.
2nd added value: Getting Unicode characters easily
A great page for getting 87,461 Unicode characters (AToW) by keyword(s): https://www.amp-what.com/.
The Reasons
-
The version in Ken’s answer works apparently (I didn’t try it), but is somehow…well…you see:
set NLM=^ set NL=^^^%NLM%%NLM%^%NLM%%NLM%
-
The version derived from user2605194’s and user287293’s answer (without anything between ‘
=
‘ and ‘^
‘):set nl=^&echo: set n=^&echo:
works partly but fails with the variable at the beginning of the line to be
echo
ed:> echo %n%Hello%n%World! echo & echo:Hello & echo:World! echo is ON. Hello World
due to the blank argument to the first
echo
. -
All others are more or less invoking three
echo
s explicitely. -
I like short one-liners.
The Story Behind
To prevent set n=^&echo:
suggested in answers herein echoing blank (and such printing its status) I first remembered the Alt+255 user from the times when Novell was a widely used network and code pages like 437 and 850 were used. But 0d255/0xFF is ›Ÿ‹ (Latin Small Letter Y with diaeresis) in Unicode nowadays.
Then I remembered that there are more spaces in Unicode than the ordinary 0d32/0x20 but all of them are considered whitespaces and lead to the same behaviour as ›␣‹.
But there are even more: the zero width spaces and joiners which are not considered as whitespaces. The problem with them is, that you cannot C&P them since with their zero width there’s nothing to select. So, I copied one that is close to one of them, the hair space (U+200A) which is right before the zero width space (U+200B) into Notepad++, opened its Hex-Editor plugin, found its bit representation E2 80 8A
and changed it to E2 80 8B
. Success! I had a non-whitespace character that’s not visible in my n
environment variable.
I’m trying to execute a command on cmd.exe
, with a line break or new line as part of the command, like below:
command -option:text
whatever
But every new line executes the command, instead of continuing the command on the next line.
So how can I input a new line character, or create a multi-line command in cmd.exe?
HopelessN00b
1,8843 gold badges21 silver badges29 bronze badges
asked Jun 8, 2010 at 9:38
2
Use the ^
character as an escape:
command -option:text^
whatever
I’m assuming you’re using cmd.exe
from Windows XP or later. This is not actual DOS. If you are using actual DOS (MS-DOS, Win3.1, Win95, Win98, WinME), then I don’t believe there is an escape character for newlines. You would need to run a custom shell. cmd.exe
will prompt you for More?
each time you press enter with a ^
at the end of the line, just press enter again to actually escape/embed a newline.
Wasif
7,6032 gold badges15 silver badges32 bronze badges
answered Jun 8, 2010 at 9:49
Darth AndroidDarth Android
37.5k5 gold badges94 silver badges111 bronze badges
8
Use Alt codes with the numpad
C:>ver
Microsoft Windows [Version 6.3.9600]
C:>echo Line1◙Line2 >con
Line1
Line2
C:>
That line feed character can be entered as an Alt code on the CLI using the numpad: with NumLock on, hold down ALT and type 10 on the numpad before releasing ALT. If you need the CR as well, type them both with Alt+13 and then Alt+10 : ♪◙
Note: this will not work in a batch file.
Sample use case:
You are trying to read the %PATH% or %CLASSPATH% environment variables to get a quick overview of what’s there and in what order — but the wall of text that path
returns is unreadable. Then this is something you can quickly type in:
echo %path:;=◙% >con
Edit:
Added the >con
workaround that Brent Rittenhouse discovered for newer versions of cmd.exe, where the original method had stopped working.
answered Oct 8, 2016 at 1:28
Amit NaiduAmit Naidu
5497 silver badges10 bronze badges
8
I don’t know if this will work for you but by putting &echo (the following space is important). in between each statement that you want on a new line. I only tried this with a simple bat file of
echo %1
Then saved that as testNewLines.bat
So then the cmd line
testNewLines first line&echo Second Line&echo Third line
Resulted in the following being echoed back
first line
second line
Third line
answered Jun 8, 2010 at 13:10
HaydarHaydar
1212 bronze badges
^
‘s output are saveable.
set br= ^
<</br (newline)>>
<</br>>
Example:
@echo off
setlocal enableExtensions enableDelayedExpansion
rem cd /D "%~dp0"
rem //# need 2 [/br], can't be saved to a var. by using %..%;
set br= ^
set "t=t1!br!t2!br!t3"
for /f "tokens=* delims=" %%q in ("!t!") do (
echo %%q
)
:scIn
rem endlocal
pause
rem exit /b
; output:
t1
t2
t3
Press any key to continue . . .
Wasif
7,6032 gold badges15 silver badges32 bronze badges
answered Apr 2, 2019 at 10:10
iliasilias
1314 bronze badges
Expanding on @Amit’s answer (https://superuser.com/a/1132659/955256) I found a way to do it in any font WITHOUT using the legacy console.
All you need to do is simply echo out the line with ALT-10 characters and then redirect it to con
and it will work!
For example, given:
(echo New-line detected rigghhhtt ◙^<— HERE!) > CON
edit: Fun fact, it seems that you can put the redirection at the beginning like so:
> CON echo New-line detected rigghhhtt ◙^<— HERE!
Weird, eh?
You will get an output of:
New-line detected rigghhhtt
<-- HERE!
(The surrounding parenthesis are optional.)
Here is a more robust example of what you can do with this AND carriage returns which now work, and completely independently!:
Best of all, this works if you redirect to a file as well!
(simply change > CON
to > desired_output_file.txt
Enjoy!
Wasif
7,6032 gold badges15 silver badges32 bronze badges
answered Oct 18, 2018 at 18:10
I believe you can’t do that from the Windows cmd.exe
shell. (It is not DOS.)
You do not need a full «custom shell» for that. You will only need to write something like this (example in Python):
import subprocess
subprocess.call(["C:\bin\sometool.exe", "testnwithnnewlines"])
Or Ruby:
Kernel::exec "C:\bin\sometool.exe", "testnwithnnewlines"
See, it’s not that hard.
answered Jun 8, 2010 at 12:46
user1686user1686
401k59 gold badges845 silver badges915 bronze badges
Install Powershell Core
Inside your batch file:
MyBatchFile.bat
@echo off
echo Hello
pwsh.exe -Command [System.Console]::WriteLine()
echo world
Wasif
7,6032 gold badges15 silver badges32 bronze badges
answered May 24, 2020 at 23:10
JomaJoma
1313 bronze badges
1
I’m trying to execute a command on cmd.exe
, with a line break or new line as part of the command, like below:
command -option:text
whatever
But every new line executes the command, instead of continuing the command on the next line.
So how can I input a new line character, or create a multi-line command in cmd.exe?
HopelessN00b
1,8843 gold badges21 silver badges29 bronze badges
asked Jun 8, 2010 at 9:38
2
Use the ^
character as an escape:
command -option:text^
whatever
I’m assuming you’re using cmd.exe
from Windows XP or later. This is not actual DOS. If you are using actual DOS (MS-DOS, Win3.1, Win95, Win98, WinME), then I don’t believe there is an escape character for newlines. You would need to run a custom shell. cmd.exe
will prompt you for More?
each time you press enter with a ^
at the end of the line, just press enter again to actually escape/embed a newline.
Wasif
7,6032 gold badges15 silver badges32 bronze badges
answered Jun 8, 2010 at 9:49
Darth AndroidDarth Android
37.5k5 gold badges94 silver badges111 bronze badges
8
Use Alt codes with the numpad
C:>ver
Microsoft Windows [Version 6.3.9600]
C:>echo Line1◙Line2 >con
Line1
Line2
C:>
That line feed character can be entered as an Alt code on the CLI using the numpad: with NumLock on, hold down ALT and type 10 on the numpad before releasing ALT. If you need the CR as well, type them both with Alt+13 and then Alt+10 : ♪◙
Note: this will not work in a batch file.
Sample use case:
You are trying to read the %PATH% or %CLASSPATH% environment variables to get a quick overview of what’s there and in what order — but the wall of text that path
returns is unreadable. Then this is something you can quickly type in:
echo %path:;=◙% >con
Edit:
Added the >con
workaround that Brent Rittenhouse discovered for newer versions of cmd.exe, where the original method had stopped working.
answered Oct 8, 2016 at 1:28
Amit NaiduAmit Naidu
5497 silver badges10 bronze badges
8
I don’t know if this will work for you but by putting &echo (the following space is important). in between each statement that you want on a new line. I only tried this with a simple bat file of
echo %1
Then saved that as testNewLines.bat
So then the cmd line
testNewLines first line&echo Second Line&echo Third line
Resulted in the following being echoed back
first line
second line
Third line
answered Jun 8, 2010 at 13:10
HaydarHaydar
1212 bronze badges
^
‘s output are saveable.
set br= ^
<</br (newline)>>
<</br>>
Example:
@echo off
setlocal enableExtensions enableDelayedExpansion
rem cd /D "%~dp0"
rem //# need 2 [/br], can't be saved to a var. by using %..%;
set br= ^
set "t=t1!br!t2!br!t3"
for /f "tokens=* delims=" %%q in ("!t!") do (
echo %%q
)
:scIn
rem endlocal
pause
rem exit /b
; output:
t1
t2
t3
Press any key to continue . . .
Wasif
7,6032 gold badges15 silver badges32 bronze badges
answered Apr 2, 2019 at 10:10
iliasilias
1314 bronze badges
Expanding on @Amit’s answer (https://superuser.com/a/1132659/955256) I found a way to do it in any font WITHOUT using the legacy console.
All you need to do is simply echo out the line with ALT-10 characters and then redirect it to con
and it will work!
For example, given:
(echo New-line detected rigghhhtt ◙^<— HERE!) > CON
edit: Fun fact, it seems that you can put the redirection at the beginning like so:
> CON echo New-line detected rigghhhtt ◙^<— HERE!
Weird, eh?
You will get an output of:
New-line detected rigghhhtt
<-- HERE!
(The surrounding parenthesis are optional.)
Here is a more robust example of what you can do with this AND carriage returns which now work, and completely independently!:
Best of all, this works if you redirect to a file as well!
(simply change > CON
to > desired_output_file.txt
Enjoy!
Wasif
7,6032 gold badges15 silver badges32 bronze badges
answered Oct 18, 2018 at 18:10
I believe you can’t do that from the Windows cmd.exe
shell. (It is not DOS.)
You do not need a full «custom shell» for that. You will only need to write something like this (example in Python):
import subprocess
subprocess.call(["C:\bin\sometool.exe", "testnwithnnewlines"])
Or Ruby:
Kernel::exec "C:\bin\sometool.exe", "testnwithnnewlines"
See, it’s not that hard.
answered Jun 8, 2010 at 12:46
user1686user1686
401k59 gold badges845 silver badges915 bronze badges
Install Powershell Core
Inside your batch file:
MyBatchFile.bat
@echo off
echo Hello
pwsh.exe -Command [System.Console]::WriteLine()
echo world
Wasif
7,6032 gold badges15 silver badges32 bronze badges
answered May 24, 2020 at 23:10
JomaJoma
1313 bronze badges
1
Содержание
- Шпаргалка по языку Batch — CMD/BAT
- Пробелы в значениях переменных
- Разрыв строки текста, перенос строки команд
- Экранирование служебных спецсимволов
- Перенос строки в cmd windows
- ЗАМЕНА ОДНОЙ ПОДСТРОКИ НА ДРУГУЮ В ФАЙЛЕ
- Вывод на экран, в файл текста без перевода строки
- Вычисление длины строковой переменной
- Получение подстроки.
- Удаление ведущих и замыкающих пробелов.
- Как вставить новую строку в команду cmd.exe?
- Используйте Alt коды с цифровой клавиатурой
- Как я могу отобразить новую строку в командном файле?
- Перенос строки в cmd windows
Шпаргалка по языку Batch — CMD/BAT
Пробелы в значениях переменных
С переменной, в значении которой есть один или несколько пробелов, можно работать как и обычно..
Но не всегда это работает и в тех случаях, когда по синтаксису пробел не должен находиться в этом месте, тогда используют обрамляющие кавычки
Но в некоторых случаях и тот и тот вариант может не подойти, тогда уж наверняка вас выручит иной вариант с кавычками, мой любимый
Разрыв строки текста, перенос строки команд
Если текст вашей команды слишком длинный, то это делает сценарий менее наглядным и удобочитаемым. Символ ^ должен быть последним в строке и означает, что следующая строка является продолжением текущей. Возможно разбиение команд более, чем на две строки. Заметим, при печати в консоли на выходе будет все же одна строка. Данный способ применяется только для более удобного восприятия и форматирования длинного кода листинга.
Если нужно сделать перенос печатаемого текста в самой консоли, то просто используется новая команда с новой строки echo ваш текст.
Если нужна пустая строка на выходе, то используйте команду echo с точкой, то есть echo. в консоли выведет пустую строку.
Экранирование служебных спецсимволов
В командном языке Windows существует некоторый набор символов с высоким приоритетом, которые всегда трактуются как спецсимволы. К ним, в частности, относятся:
Этим же символом домика можно экранировать и любой другой символ, включая самого себя.
Источник
Перенос строки в cmd windows
1 EXIT /b for %%a in («A=a» «B=b» «C=c» «D=d» «E=e» «F=f» «G=g» «H=h» «I=i» «J=j» «K=k» «L=l» «M=m» «N=n» «O=o» «P=p» «Q=q» «R=r» «S=s» «T=t» «U=u» «V=v» «W=w» «X=x» «Y=y» «Z=z» «А=а» «Б=б» «В=в» «Г=г» «Д=д» «Е=е» «Ж=ж» «З=з» «И=и» «К=к» «Л=л» «М=м» «Н=н» «О=о» «П=п» «Р=р» «С=с» «Т=т» «У=у» «Ф=ф» «Х=х» «Ц=ц» «Ч=ч» «Ш=ш» «Щ=щ» «Ь=ь» «Ы=ы» «Ъ=ъ» «Э=э» «Ю=ю» «Я=я») do ( call set %
ЗАМЕНА ОДНОЙ ПОДСТРОКИ НА ДРУГУЮ В ФАЙЛЕ
Для выполнения этой операции можно использовать утилиту sbs2.com
Традиция и дошедший комментарий приписывает авторство Herbert Kleebauer. Получить эту программку можно выполнив следующий бат файл:
x>viH>`LYNBGyA?@xAB?sUq`>>sbs2.com
echo LRy@PwtCYQEuFK@A
BxPtDss@fFqjVmzD@qBEOEenU?`eHHeBCMs?FExep>>sbs2.com
echo LHsPBGyA?@xAunjzA>EKNs@CA?wQpQpKLBHv?s`WJ`LRCYyIWMJaejCksl>>sbs2.com
echo H[GyFGhHBwHZjjHeoFasuFUJeHeB?OsQH[xeHCPvqFj@oq@eNc?
>>sbs2.com
echo CK>Ayre
Вывод на экран, в файл текста без перевода строки
В bat/cmd командах не предусмотрена возможность вывода данных без перевода строки. Но для решения такой задачи можно использовать некую уловку.
Команда set с параметром, предусматривающим ввод данных с экрана, позволяет вывести подсказку для ввода без перевода строки. Вот этим мы и воспользуемся.
b.txt
Вычисление длины строковой переменной
В bat/cmd командах нет функции, позволяющей вычислять длину строковой переменной. А такая задача возникает не так уж и редко. Однако средств командного языка достаточно, для того что бы решить такую задачу, не прибегая к использованию специальных программ. Рассмотрим несколько вариантов решения данной задачи:
1 :startvarcount if not defined var exit /b set var=%var:
1% set /a %2+=1 goto startvarcount exit /b
Еще один вариант вычисления длины строковой переменной:
%$StringLen%%% If «»==»%$StringChr%» GOTO :EOF GoTo :StringLenLoop
n0.tmp» For %%i In («%TEMP%%
Ну и, наконец, решение, поразившее меня своей математической лаконичностью:
1!»&rem keep the A up front to ensure we rem get the length and not the upper bound rem it also avoids trouble in case of empty string set «len=0» for /L %%A in (12,-1,0) do ( set /a «len|=1% >» 1 call set sim=%%str:
!BB!,1%% if «!sim!» == «» ( set /a mmax=!BB!) else ( set /a mmin=!BB! ) ) ENDLOCAL & SET /a %
Получение подстроки.
Или как вариант предыдущего
Удаление ведущих и замыкающих пробелов.
Источник
Как вставить новую строку в команду cmd.exe?
Я пытаюсь выполнить команду cmd.exe с разрывом строки или новой строкой в составе команды, как показано ниже:
Но каждая новая строка выполняет команду, а не продолжает команду на следующей строке.
Так как же ввести символ новой строки или создать многострочную команду в cmd.exe?
Используйте ^ персонажа как побег:
Я предполагаю, что вы используете cmd.exe из Windows XP или аналогичный. Это не фактический DOS. Если вы используете настоящую DOS (MS-DOS, Win3.1, Win95, Win98, WinME), то я не верю, что есть выход для перевода строки. Вам нужно будет запустить собственную оболочку. cmd.exe предложит вам «More?» каждый раз, когда вы нажимаете ввод с ^ конца в конце строки, просто нажмите ввод еще раз, чтобы фактически выйти / вставить новую строку.
Используйте Alt коды с цифровой клавиатурой
Этот символ перевода строки можно ввести как код Alt в CLI, используя цифровую клавиатуру: при включенной NumLock, удерживая нажатой клавишу ALT, введите 10 на цифровой клавиатуре, прежде чем выпускать ALT. Если вам также нужен CR, наберите их оба с помощью Alt + 13, а затем Alt + 10: ♪◙
Примечание: это не будет работать в командном файле.
Пример использования:
Вы пытаетесь прочитать переменные окружения% PATH% или% CLASSPATH%, чтобы получить быстрый обзор того, что там и в каком порядке, но path возвращаемая стенка текста не читается. Тогда это то, что вы можете быстро набрать:
Источник
Как я могу отобразить новую строку в командном файле?
Как вы можете вставить новую строку из вывода командного файла?
Я хочу сделать что-то вроде:
echo hello & echo.world
Вы должны увидеть результат, подобный следующему:
Очевидно, вам нужен только код между операторами REM.
В echo: cmd / bat-файлах есть стандартная функция записи пустой строки, которая эмулирует новую строку в вашем cmd-выходе:
Вывод приведенного выше cmd-файла:
Как и ответ Кена, но с использованием отложенного расширения.
Сначала создается отдельный символ перевода строки и присваивается переменной n.
Это работает, когда каретка в конце строки пытается экранировать следующий символ, но если это перевод строки, он игнорируется, а следующий символ читается и экранируется (даже если это также перевод строки).
Затем вам нужен третий перевод строки для завершения текущей инструкции, иначе третья строка будет добавлена к LF-переменной.
Даже командные файлы имеют окончание строк с CR / LF, важны только LF, так как CR удаляются на этом этапе анализатора.
Преимущество использования отложенного раскрытия состоит в том, что вообще нет специальной обработки символов.
echo Line1%LF%Line2 потерпит неудачу, так как синтаксический анализатор прекратит синтаксический анализ на одной строке.
Редактировать: избегать echo.
Это не отвечает на вопрос, так как вопрос был об одном echo который может выводить несколько строк.
Но, несмотря на другие ответы, которые предлагают использовать echo. для создания новой строки, следует отметить, что echo. это наихудший вариант, поскольку он очень медленный и может полностью потерпеть неудачу, так как cmd.exe ищет файл с именем ECHO и пытается его запустить.
Для печати только пустой строки, вы можете использовать один из
Источник
Перенос строки в cmd windows
Сообщения: 27459
Благодарности: 8022
sov44, «08H» — не «символ перевода к а ретки», а «Backspace», возврат на один символ.
Для вывода пары символов CrLf достаточно команды «echo.» (именно с точкой, сразу, без пробела, вослед «echo»).
В качестве ликбеза, какие ещё такого типа символы существуют для командной строки? »
4 Управляющие символы. Работают в консоли командной строки, понятно, далеко не все, это не терминал.
Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.
Читайте также: как войти в биос на ноутбуке packard bell windows 10
Сообщения: 2299
Благодарности: 668
Сообщения: 27459
Благодарности: 8022
«0x08» — «Ctrl-Q», «Ctrl-H» («H» — восьмая буква английского алфавита, посему «Ctrl-H» в консоли вводит символ с кодом «0x08»); «0x07» — соответственно «Ctrl-Q», «Ctrl-G» («G» — седьмая буква английского алфавита, посему «Ctrl-G» в консоли вводит символ с кодом «0x07»).
Вот как это может выглядеть (скопируйте код и вставьте в редактор Far Manager’а, поскольку визуально управляющие коды здесь не видны):
Здесь же можете увидеть и пример работы с «echo.» после « Это сообщение посчитали полезным следующие участники:
В редакторе Far Manager’а, коим я пользуюсь, нет ничего проще — посредством «Ctrl-Q»: »
Сообщения: 27459
Благодарности: 8022
yurfed, я давно убедился в том, что Far Manager, как и Microsoft Office, неисчерпаем: казалось бы — давно знаком, хорошо ориентируешься, знаешь почти наизусть, а нет-нет — да и выудишь что-то новое, казалось бы, лежащее на поверхности. Смотришь и думаешь — ну, как я раньше-то на это не обратил внимания, элементарно же.
Вот за это я его и люблю — что посредством него можно реализовать практически всё потребное в плане менеджмента файлов (для чего он, собственно, и предназначен). А уж в третьей версии, где «искаропки» теперь доступен полноценный входной ЯВУ Lua — так и вовсе… Дело осталось за малым — набраться решимости и переползти со второй на третью версию .
Iska
Есть иной, чем Far Manager_ом набирать символы?
, довольно интересный мануал. Однако Far Manager_ом никогда не пользовался, а только по старинке Total Commander Текст вставил, но символы не увидел. Если набирать вручную «Ctrl-Q», «Ctrl-H», символы вижу.
Сообщения: 27459
Благодарности: 8022
Это печально. У меня под Mozilla Firefox нормально с этого форума копирует. Могу вложить файл в архиве, если есть ещё потребность. Выкладывать?
Можете ещё включить в настройках редактора отображение пробельных символов:
Источник
Adblock
detector
Содержание
- 1 Пробелы в значениях переменных
- 2 Разрыв строки текста, перенос строки команд
- 3 Экранирование служебных спецсимволов
Пробелы в значениях переменных
С переменной, в значении которой есть один или несколько пробелов, можно работать как и обычно..
Set PathBase=c:Program FilesFirefox Set StartProcess=%PathBase%Firefox.exe
Но не всегда это работает и в тех случаях, когда по синтаксису пробел не должен находиться в этом месте, тогда используют обрамляющие кавычки
Set PathBase=c:Program FilesFirefox echo "%PathBase%profiles.ini"
Но в некоторых случаях и тот и тот вариант может не подойти, тогда уж наверняка вас выручит иной вариант с кавычками, мой любимый
Set "PathBase=c:Program FilesFirefox" echo %PathBase%profiles.ini
Разрыв строки текста, перенос строки команд
Если текст вашей команды слишком длинный, то это делает сценарий менее наглядным и удобочитаемым. Символ ^ должен быть последним в строке и означает, что следующая строка является продолжением текущей. Возможно разбиение команд более, чем на две строки. Заметим, при печати в консоли на выходе будет все же одна строка. Данный способ применяется только для более удобного восприятия и форматирования длинного кода листинга.
echo ^ Этот способ работает^ не только для текста^ но и для команд
Если нужно сделать перенос печатаемого текста в самой консоли, то просто используется новая команда с новой строки echo ваш текст.
Если нужна пустая строка на выходе, то используйте команду echo с точкой, то есть echo. в консоли выведет пустую строку.
Экранирование служебных спецсимволов
В командном языке Windows существует некоторый набор символов с высоким приоритетом, которые всегда трактуются как спецсимволы. К ним, в частности, относятся:
- Операторы перенаправления ввода-вывода <, >, >>.
- Оператор конвейера |.
- Операторы объединения команд ||, & и &&.
- Оператор разыменования переменной %…%.
В случае со знаком процента решение довольно хорошо известно и состоит в удвоении этого символа. Для других символов тут нам и придет на помощь уже известный знак домика — символ ^.
:: Это не сработает, вызовет ошибку - > was unexpected at this time. echo <html> :: А это сработает echo ^<html^>
Этим же символом домика можно экранировать и любой другой символ, включая самого себя.
Продолжение следует..
195 / 34 / 3 Регистрация: 12.05.2010 Сообщений: 361 |
|
1 |
|
Есть ли специальный символ для перехода на новую строку?03.06.2010, 14:55. Показов 46187. Ответов 9
Люди есть ли такой знак только испольняющей кнопки [Enter] ???
0 |
Почетный модератор 28037 / 15768 / 981 Регистрация: 15.09.2009 Сообщений: 67,753 Записей в блоге: 78 |
|
03.06.2010, 14:57 |
2 |
а что нужно сделать то?
0 |
195 / 34 / 3 Регистрация: 12.05.2010 Сообщений: 361 |
|
03.06.2010, 18:21 [ТС] |
3 |
просто нужно Добавлено через 3 минуты Копарация Microsoft вопрос есть ли такой спец знак ?
0 |
Почетный модератор 28037 / 15768 / 981 Регистрация: 15.09.2009 Сообщений: 67,753 Записей в блоге: 78 |
|
03.06.2010, 23:30 |
4 |
echo Копарация Microsoft
1 |
195 / 34 / 3 Регистрация: 12.05.2010 Сообщений: 361 |
|
04.06.2010, 15:39 [ТС] |
5 |
я это знаю !!!!
0 |
Почетный модератор 28037 / 15768 / 981 Регистрация: 15.09.2009 Сообщений: 67,753 Записей в блоге: 78 |
|
04.06.2010, 17:46 |
6 |
я про такой не вкурсе,
0 |
12383 / 7222 / 758 Регистрация: 09.09.2009 Сообщений: 28,183 |
|
05.06.2010, 00:34 |
7 |
esc 13 или 14 — не помню точно
0 |
195 / 34 / 3 Регистрация: 12.05.2010 Сообщений: 361 |
|
07.06.2010, 21:48 [ТС] |
8 |
esc 13 или 14 — не помню точно Чего??? Esc + 13 или 14 ?
0 |
ComSpec 3455 / 1993 / 635 Регистрация: 26.02.2014 Сообщений: 1,457 |
||||
13.11.2015, 03:34 |
9 |
|||
Часть сообщений перенёс в новый тред «Сымитировать нажатие клавиши ENTER».
К примеру есть специальные знаки @#$%^&* у каждого свои предназначение Такого специального символа в синтаксисе языка командной строки и пакетных файлов нет. Но есть команда, которая осуществляет переход на новую строку. Эта команда — команда Windows Batch file echo.
. Для записи в коде выводимого текста в одну строку можно создать и своё сочетание символов для перехода на новую строку в виде расширения какой-нибудь переменной, например Windows Batch file set "n=&echo." . Пример:
. Результат: (c) Корпорация Майкрософт .
2 |
Покинул форум 4660 / 1304 / 335 Регистрация: 07.05.2015 Сообщений: 2,600 |
|
13.11.2015, 12:57 |
10 |
esc 13 или 14 — не помню точно В ASCII cr — это 13, а lf — 10 (14 — это soh).
Такого специального символа в синтаксисе языка командной строки и пакетных файлов нет. Вы запамятовали сказать, что есть побочные эффекты некоторых других команд, например, единственный символ < или > в командном файле сделает примерно то же, что и Enter.
Люди есть ли такой знак только испольняющей кнопки [Enter] ??? Если есть PowerShell, можно «нажать» Enter, послав через SendKeys соответсвующий сигнал.
0 |
Есть следующий bat файл с кодом
for /l %%i in (1,1,10) do echo <? phpкод ?> >%%i.php
Нужно сделать чтобы он создавал файлы вот так
for /l %%i in (1,1,10) do echo
<?
phpкод
?> >%%i.php
Но так попробовал не работает.
-
Вопрос заданболее трёх лет назад
-
7626 просмотров
echo off
for /l %%i in (1,1,10) do (
echo ^<^?php > %%i.php
echo php code .. >> %%i.php
echo ^?^>php >> %%i.php
)
Знак ^ = экранирует спец символы
Если надо пустую строку, то можно сделать так echo. >> %%i.php
(т.е. точка на конце echo)
В первой команде используется > чтобы перезаписать файл при повторном вызове, в отличие от >> который добавляет данные без перезаписи
Пригласить эксперта
Если код длинный, вы замучаетесь выводить его через echo. Положите его в отдельный файл и перенаправляйте вывод type для этого файла в нужный, либо делайте конкатенацию через copy.
-
Показать ещё
Загружается…
07 февр. 2023, в 23:29
3000 руб./за проект
07 февр. 2023, в 23:29
51000 руб./за проект
07 февр. 2023, в 23:02
2000 руб./за проект