在Windows批处理中,Linux shell命令echo -n抑制输出末尾的换行符是什么?

其思想是在循环中的同一行上写入。


当前回答

我发现这个简单的单行批处理文件“EchoPart.bat”非常有用。

@echo | set /p=%*

然后,我可以在交互式CMD行中,或者作为快捷方式的一部分,写如下所示的内容。它带来了一些新的可能性。

echopart "Hello, " & echopart "and then " & echo Goodbye

如果你在批处理文件中使用它,文本可以从参数变量而不是不可变字符串中获得。例如:

@echopart Hello %* & @echo , how are you?

因此,在"SayHello.bat"中执行这一行允许:

甚至……

玩个游戏,玩得开心!

其他回答

示例1:它工作并生成退出代码= 0。这很好。 注意“。”,直接在echo之后。

C:\Users\phife.狗\ gitrepos \ 1 # \ repo_abc \脚本 @echo。| set /p JUNK_VAR=这是一个像Linux echo一样显示的消息-n将显示它…&回显%ERRORLEVEL%

这是一个像Linux echo -n一样显示的消息…0

示例2:这可以工作,但产生退出代码= 1。这很糟糕。 请注意回声后面缺少“。”。这似乎就是不同之处。

C:\Users\phife.狗\ gitrepos \ 1 # \ repo_abc \脚本 @echo | set /p JUNK_VAR=这是一个像Linux echo -n会显示它的消息…&回显%ERRORLEVEL%

这是一个像Linux echo -n一样显示的消息…1

使用Bill Stewart的“Shell脚本工具包”中的EchoX.EXE 如何在Windows Cmd脚本中抑制换行:

@Echo Off
Rem Print three Echos in one line of output
EchoX -n "Part 1 - "
EchoX -n "Part 2 - "
EchoX    "Part 3"
Rem

给:

Part 1 - Part 2 - Part 3
{empty line}
d:\Prompt>

这种用法的帮助是:

Usage: echox [-n] message
  -n       Do not skip to the next line.
  message  The text to be displayed.

该实用程序小于48K,应该位于Path中。它可以做的更多事情:-打印文本而不移动到下一行-打印文本在一定宽度内向左、中间或右边对齐-打印文本与制表符,换行和返回-打印文本在前景和背景颜色

该工具包还包括12个很棒的脚本编写技巧。 下载页面还包含其他三个有用的工具包。

使用set和/p参数可以不带换行符进行回显:

C:\> echo Hello World
Hello World

C:\> echo|set /p="Hello World"
Hello World
C:\>

回显带有空格且没有换行符

如Pedro之前所述,没有新行和前面有空格的echo有效(假设“9”是一个真正的[BackSpace])。

<nul set /p=.9    Hello everyone

我在Windows 10的新主机上遇到了一些问题,但我还是通过以下方式解决了问题。 在CMD中输入:

echo .◘>bs.txt

我按[Alt] +[8]键实现了“▲” (实际符号可能因代码页而异)。

然后使用Notepad.exe将结果从“bs.txt”复制到需要的地方就很容易了。

@echo off
<nul set /p "_s=.◘    Hello everyone"
echo: here

你可以从gnuwin32 (coreutils包)中使用“tr”删除换行符

@echo off
set L=First line
echo %L% | tr -d "\r\n"
echo Second line
pause

顺便说一下,如果您正在编写大量脚本,gnuwin32是一个金矿。