windows echo已關閉 - 你怎麼能在批處理文件中回顯一個換行符?





bat範例 (15)


Ken和Jeb解決方案運作良好。

但是新行僅用LF字符生成,我需要CRLF字符(Windows版本)。

為此,在腳本結尾處,我已將LF轉換為CRLF。

例:

TYPE file.txt | FIND "" /V > file_win.txt
del file.txt
rename file_win.txt file.txt

你怎麼能從你的批處理文件輸出插入一個換行符?

我想要做一些事情:

> echo hello\nworld

哪個會輸出:

你好
世界




要批量開始新行,您只需添加“echo [”,如下所示:

echo Hi!
echo[
echo Hello!



如果你需要把結果放到一個文件中,你可以使用

(echo a & echo. & echo b) > file_containing_multiple_lines.txt



如果需要在可以傳遞給變量的字符串文字中使用著名的\ n,可以在下面的Hello.bat腳本中編寫代碼:

@echo off
set input=%1
if defined input (
    set answer=Hi!\nWhy did you call me a %input%?
) else (
    set answer=Hi!\nHow are you?\nWe are friends, you know?\nYou can call me by name.
)

setlocal enableDelayedExpansion
set newline=^


rem Two empty lines above are essential
echo %answer:\n=!newline!%

這種方式可以在一個位置準備多行輸出,即使在其他掃描或外部文件中,也可以在另一個位置打印。

換行符保存在換行符變量中。 它的值必須在回波行展開後被替換所以我使用setlocal enableDelayedExpansion來啟用擴展變量執行的感嘆號。 執行用換行符替換\ n (在幫助集中查找語法)。 我們當然可以使用!newline! 同時設置答案\ n更方便。 它可以從外部傳遞(嘗試Hello R2 \ nD2 ),其中沒有人知道持有換行符的變量的名稱(是的, Hello C3!newline!P0以同樣的方式工作)。

上面的例子可以細化為一個子程序或獨立的批處理,如call:mlecho Hi\nI'm your comuter

:mlecho
setlocal enableDelayedExpansion
set text=%*
set nl=^


echo %text:\n=!nl!%
goto:eof

請注意,額外的反斜杠不會阻止腳本解析\ n子字符串。




在這裡,創建一個.bat文件,其中包含以下內容:

@echo off
REM Creating a Newline variable (the two blank lines are required!)
set NLM=^


set NL=^^^%NLM%%NLM%^%NLM%%NLM%
REM Example Usage:
echo There should be a newline%NL%inserted here.

echo.
pause

你應該看到如下的輸出:

There should be a newline
inserted here.

Press any key to continue . . .

顯然,你只需要REM語句之間的代碼。




使用:

echo hello
echo.
echo world



我不能說比以下更簡單:

echo echo hello^&echo world^&pause>silly.bat                       
call silly.bat



你也可以這樣做,

(for %i in (a b "c d") do @echo %~i)

輸出將是,

a
b
c d

請注意,如果將其放入批處理文件中,則'%'應加倍。

(for %%i in (a b "c d") do @echo %%~i)



echo hello & echo.world

這意味著你可以定義& echo. 作為換行符的常量\n




有一個標準的特徵echo:在cmd / bat-files中寫空行,它在你的cmd輸出中模擬一個新行:

@echo off
@echo line1
@echo:
@echo line2

上面引用的cmd文件的輸出:

line1

line2



如果有人來這裡是因為他們想要回顯一個來自MINGW make makefile的空白行,我使用了

@cmd /c echo.

只需使用echo. 導致可怕的process_begin: CreateProcess(NULL, echo., ...) failed. 錯誤信息。

我希望這能幫助至少一個其他人:)




echo. 說夠了。

如果您需要一條線,請使用& 。 例如,

echo Line 1 & echo. & echo line 3

會輸出為:

Line 1

line 3

現在,假設你想要更有趣的東西,......

set n=^&echo.
echo hello %n% world

輸出

hello
world

然後,只要你想在echo語句中添加一行,就只需要輸入%n% 。 這更接近您在各種語言中使用的\n

分解

set n=設置變量n等於:

^排除下面的符號:

&意味著在同一行上執行另一個命令。 我們不關心errorlevel(它是一個大聲喊叫的迴聲聲明),所以不需要&&

echo. 繼續迴聲聲明。

所有這些工作,因為你實際上可以創建代碼的變量,並在其他命令中使用它們。 它有點像貧民窟的功能,因為批量並不是最先進的shell腳本語言。 這只適用於批處理變量的不良使用,而不是自動指定整數,字符,浮點數,字符串等。

如果你很狡猾,你可以把它和其他東西一起使用。 例如,使用它來回顯標籤

set t=^&echo.     ::there are spaces up to the double colon



就像Grimtron所建議的那樣 - 下面是一個快速定義它的例子:

@echo off
set newline=^& echo.
echo hello %newline%world

產量

C:\>test.bat
hello
world



你可以使用@echo (@echo + [space] + [insecable space])

注意:可以用Alt + 0160獲得可放置的空間

希望能幫助到你 :)

嗯,你是對的,我需要它在一個Makefile中,它在那裡完美的工作。 我想我的答案不適合批處理文件...我的壞。




感謝@ k-five為這個答案

declare -A colors
#curl www.bunlongheng.com/code/colors.png

# Reset
colors[Color_Off]='\033[0m'       # Text Reset

# Regular Colors
colors[Black]='\033[0;30m'        # Black
colors[Red]='\033[0;31m'          # Red
colors[Green]='\033[0;32m'        # Green
colors[Yellow]='\033[0;33m'       # Yellow
colors[Blue]='\033[0;34m'         # Blue
colors[Purple]='\033[0;35m'       # Purple
colors[Cyan]='\033[0;36m'         # Cyan
colors[White]='\033[0;37m'        # White

# Bold
colors[BBlack]='\033[1;30m'       # Black
colors[BRed]='\033[1;31m'         # Red
colors[BGreen]='\033[1;32m'       # Green
colors[BYellow]='\033[1;33m'      # Yellow
colors[BBlue]='\033[1;34m'        # Blue
colors[BPurple]='\033[1;35m'      # Purple
colors[BCyan]='\033[1;36m'        # Cyan
colors[BWhite]='\033[1;37m'       # White

# Underline
colors[UBlack]='\033[4;30m'       # Black
colors[URed]='\033[4;31m'         # Red
colors[UGreen]='\033[4;32m'       # Green
colors[UYellow]='\033[4;33m'      # Yellow
colors[UBlue]='\033[4;34m'        # Blue
colors[UPurple]='\033[4;35m'      # Purple
colors[UCyan]='\033[4;36m'        # Cyan
colors[UWhite]='\033[4;37m'       # White

# Background
colors[On_Black]='\033[40m'       # Black
colors[On_Red]='\033[41m'         # Red
colors[On_Green]='\033[42m'       # Green
colors[On_Yellow]='\033[43m'      # Yellow
colors[On_Blue]='\033[44m'        # Blue
colors[On_Purple]='\033[45m'      # Purple
colors[On_Cyan]='\033[46m'        # Cyan
colors[On_White]='\033[47m'       # White

# High Intensity
colors[IBlack]='\033[0;90m'       # Black
colors[IRed]='\033[0;91m'         # Red
colors[IGreen]='\033[0;92m'       # Green
colors[IYellow]='\033[0;93m'      # Yellow
colors[IBlue]='\033[0;94m'        # Blue
colors[IPurple]='\033[0;95m'      # Purple
colors[ICyan]='\033[0;96m'        # Cyan
colors[IWhite]='\033[0;97m'       # White

# Bold High Intensity
colors[BIBlack]='\033[1;90m'      # Black
colors[BIRed]='\033[1;91m'        # Red
colors[BIGreen]='\033[1;92m'      # Green
colors[BIYellow]='\033[1;93m'     # Yellow
colors[BIBlue]='\033[1;94m'       # Blue
colors[BIPurple]='\033[1;95m'     # Purple
colors[BICyan]='\033[1;96m'       # Cyan
colors[BIWhite]='\033[1;97m'      # White

# High Intensity backgrounds
colors[On_IBlack]='\033[0;100m'   # Black
colors[On_IRed]='\033[0;101m'     # Red
colors[On_IGreen]='\033[0;102m'   # Green
colors[On_IYellow]='\033[0;103m'  # Yellow
colors[On_IBlue]='\033[0;104m'    # Blue
colors[On_IPurple]='\033[0;105m'  # Purple
colors[On_ICyan]='\033[0;106m'    # Cyan
colors[On_IWhite]='\033[0;107m'   # White


color=${colors[$input_color]}
white=${colors[White]}
# echo $white



for i in "${!colors[@]}"
do
  echo -e "$i = ${colors[$i]}I love you$white"
done

結果

希望這張image能夠幫助你選擇你的bash的顏色:D





windows batch-file command-line dos