Перевод строки в командной строке windows

How can you you insert a newline from your batch file output? I want to do something like: echo hellonworld Which would output: hello world

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 echoed:

    > 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 echos 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's user avatar

HopelessN00b

1,8843 gold badges21 silver badges29 bronze badges

asked Jun 8, 2010 at 9:38

rudimenter's user avatar

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's user avatar

Wasif

7,6032 gold badges15 silver badges32 bronze badges

answered Jun 8, 2010 at 9:49

Darth Android's user avatar

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.

Community's user avatar

answered Oct 8, 2016 at 1:28

Amit Naidu's user avatar

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

Haydar's user avatar

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's user avatar

Wasif

7,6032 gold badges15 silver badges32 bronze badges

answered Apr 2, 2019 at 10:10

ilias's user avatar

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's user avatar

Wasif

7,6032 gold badges15 silver badges32 bronze badges

answered Oct 18, 2018 at 18:10

Brent Rittenhouse's user avatar

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

user1686's user avatar

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's user avatar

Wasif

7,6032 gold badges15 silver badges32 bronze badges

answered May 24, 2020 at 23:10

Joma's user avatar

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's user avatar

HopelessN00b

1,8843 gold badges21 silver badges29 bronze badges

asked Jun 8, 2010 at 9:38

rudimenter's user avatar

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's user avatar

Wasif

7,6032 gold badges15 silver badges32 bronze badges

answered Jun 8, 2010 at 9:49

Darth Android's user avatar

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.

Community's user avatar

answered Oct 8, 2016 at 1:28

Amit Naidu's user avatar

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

Haydar's user avatar

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's user avatar

Wasif

7,6032 gold badges15 silver badges32 bronze badges

answered Apr 2, 2019 at 10:10

ilias's user avatar

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's user avatar

Wasif

7,6032 gold badges15 silver badges32 bronze badges

answered Oct 18, 2018 at 18:10

Brent Rittenhouse's user avatar

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

user1686's user avatar

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's user avatar

Wasif

7,6032 gold badges15 silver badges32 bronze badges

answered May 24, 2020 at 23:10

Joma's user avatar

JomaJoma

1313 bronze badges

1

Содержание

  1. Шпаргалка по языку Batch — CMD/BAT
  2. Пробелы в значениях переменных
  3. Разрыв строки текста, перенос строки команд
  4. Экранирование служебных спецсимволов
  5. Перенос строки в cmd windows
  6. ЗАМЕНА ОДНОЙ ПОДСТРОКИ НА ДРУГУЮ В ФАЙЛЕ
  7. Вывод на экран, в файл текста без перевода строки
  8. Вычисление длины строковой переменной
  9. Получение подстроки.
  10. Удаление ведущих и замыкающих пробелов.
  11. Как вставить новую строку в команду cmd.exe?
  12. Используйте Alt коды с цифровой клавиатурой
  13. Как я могу отобразить новую строку в командном файле?
  14. Перенос строки в 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

contributor

Сообщения: 27459
Благодарности: 8022

sov44, «08H» — не «символ перевода к а ретки», а «Backspace», возврат на один символ.

Для вывода пары символов CrLf достаточно команды «echo.» (именно с точкой, сразу, без пробела, вослед «echo»).

В качестве ликбеза, какие ещё такого типа символы существуют для командной строки? »

4 Управляющие символы. Работают в консоли командной строки, понятно, далеко не все, это не терминал.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

Читайте также:  как войти в биос на ноутбуке packard bell windows 10

Сообщения: 2299
Благодарности: 668

contributor

Сообщения: 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»: »

contributor

Сообщения: 27459
Благодарности: 8022

yurfed, я давно убедился в том, что Far Manager, как и Microsoft Office, неисчерпаем: казалось бы — давно знаком, хорошо ориентируешься, знаешь почти наизусть, а нет-нет — да и выудишь что-то новое, казалось бы, лежащее на поверхности. Смотришь и думаешь — ну, как я раньше-то на это не обратил внимания, элементарно же.

Вот за это я его и люблю — что посредством него можно реализовать практически всё потребное в плане менеджмента файлов (для чего он, собственно, и предназначен). А уж в третьей версии, где «искаропки» теперь доступен полноценный входной ЯВУ Lua — так и вовсе… Дело осталось за малым — набраться решимости и переползти со второй на третью версию wink.

Iskasmile

Есть иной, чем Far Manager_ом набирать символы?

, довольно интересный мануал. Однако Far Manager_ом никогда не пользовался, а только по старинке Total Commander Текст вставил, но символы не увидел. Если набирать вручную «Ctrl-Q», «Ctrl-H», символы вижу.contributor

Сообщения: 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



Почетный модератор

Эксперт по компьютерным сетямЭксперт Windows

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 минуты
К примеру есть специальные знаки @#$%^&* у каждого свои предназначение
а есть ли знак который делает перенос строки на следующую стоку
пример
echo Копарация Microsoft [Знак переноса] 1991-2010
итог

Копарация Microsoft
1991-2010

вопрос есть ли такой спец знак ?



0



Почетный модератор

Эксперт по компьютерным сетямЭксперт Windows

28037 / 15768 / 981

Регистрация: 15.09.2009

Сообщений: 67,753

Записей в блоге: 78

03.06.2010, 23:30

4

echo Копарация Microsoft
echo 1991-2010



1



195 / 34 / 3

Регистрация: 12.05.2010

Сообщений: 361

04.06.2010, 15:39

 [ТС]

5

я это знаю !!!!
я задаю вопрос есть ли такой спец символ!!!
А это просто был пример



0



Почетный модератор

Эксперт по компьютерным сетямЭксперт Windows

28037 / 15768 / 981

Регистрация: 15.09.2009

Сообщений: 67,753

Записей в блоге: 78

04.06.2010, 17:46

6

я про такой не вкурсе,



0



Эксперт по компьютерным сетямЭксперт NIX

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

Цитата
Сообщение от dmkhn
Посмотреть сообщение

esc 13 или 14 — не помню точно

Чего???

Esc + 13 или 14 ?
чтото я не понял
ALT + 13 =♪
ALT + 14 =♫



0



ComSpec

3455 / 1993 / 635

Регистрация: 26.02.2014

Сообщений: 1,457

13.11.2015, 03:34

9

Часть сообщений перенёс в новый тред «Сымитировать нажатие клавиши ENTER».

Цитата
Сообщение от HOST_ERROR
Посмотреть сообщение

К примеру есть специальные знаки @#$%^&* у каждого свои предназначение
а есть ли знак который делает перенос строки на следующую стоку
пример
echo Копарация Microsoft [Знак переноса] 1991-2010
итог
Копарация Microsoft
1991-2010
вопрос есть ли такой спец знак ?

Такого специального символа в синтаксисе языка командной строки и пакетных файлов нет.

Но есть команда, которая осуществляет переход на новую строку.

Эта команда — команда ECHO. (в классическом варианте в конце именно точка, но можно использовать и некоторые другие символы):

Windows Batch file

echo.

.

Для записи в коде выводимого текста в одну строку можно создать и своё сочетание символов для перехода на новую строку в виде расширения какой-нибудь переменной, например %n%, предварительно задав эту переменную:

Windows Batch file

set "n=&echo."

.

Пример:

Windows Batch file
1
2
3
4
5
6
7
@echo off
 
set "n=&echo."
 
echo (c) Корпорация Майкрософт%n%(Microsoft Corporation)%n%1991-2015%n%Все права защищены.
 
pause>nul

.

Результат:

(c) Корпорация Майкрософт
(Microsoft Corporation)
1991-2015
Все права защищены.

.



2



Покинул форум

4660 / 1304 / 335

Регистрация: 07.05.2015

Сообщений: 2,600

13.11.2015, 12:57

10

Цитата
Сообщение от Dmitry

esc 13 или 14 — не помню точно

В ASCII cr — это 13, а lf — 10 (14 — это soh).

Цитата
Сообщение от ComSpec

Такого специального символа в синтаксисе языка командной строки и пакетных файлов нет.

Вы запамятовали сказать, что есть побочные эффекты некоторых других команд, например, единственный символ < или > в командном файле сделает примерно то же, что и Enter.

Цитата
Сообщение от HOST_ERROR

Люди есть ли такой знак только испольняющей кнопки [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 руб./за проект

Минуточку внимания

Понравилась статья? Поделить с друзьями:
  • Перевод сетевой карты в режим мониторинга windows
  • Перевод сетевой карты в режим монитора windows
  • Перевод сервера с windows на linux
  • Перевод с экрана монитора в реальном времени windows
  • Перевод песни тины тернер steamy windows