在Windows批处理中,Linux shell命令echo -n抑制输出末尾的换行符是什么?
其思想是在循环中的同一行上写入。
在Windows批处理中,Linux shell命令echo -n抑制输出末尾的换行符是什么?
其思想是在循环中的同一行上写入。
当前回答
jscript:
@if (@X)==(@Y) @end /*
@cscript //E:JScript //nologo "%~nx0" %*
@exit /b %errorlevel%
*/if(WScript.Arguments.Count()>0) WScript.StdOut.Write(WScript.Arguments.Item(0));
如果它叫write.bat,你可以这样测试它:
call write.bat string & echo _Another_String_
如果你想使用powershell,但有cmd定义的变量,你可以使用:
set str=_My_StrinG_
powershell "Write-Host -NoNewline ""%str%"""" & echo #Another#STRING#
其他回答
SET /P中被剥离空白的解决方案:
窍门是你可以在DOS的文本编辑器EDIT中调用的退格字符。要在EDIT中创建它,请按ctrl +ctrlH。 我想把它粘贴在这里,但是这个网页不能显示它。它在记事本上是可见的(它很奇怪,就像一个小的黑色矩形,中间有一个白圈)
你可以这样写:
<nul set /p=.9 Hello everyone
点可以是任何字符,它只是告诉SET /P文本从这里开始,在空格之前,而不是在“Hello”处。 “9”是一个退格字符的表示,我不能在这里显示。你必须用它来代替9,它就会删除",之后你会得到:
Hello Everyone
而不是:
Hello Everyone
我希望这对你们有帮助
受到这个问题答案的启发,我制作了一个简单的计数器批处理脚本,在同一行上打印进度值(0-100%)(覆盖前一行)。也许这对寻找类似解决方案的其他人也有价值。
注:*为不可打印字符,应使用[Alt + Numpad 0 + Numpad 8]组合键输入,即退格字符。
@ECHO OFF
FOR /L %%A in (0, 10, 100) DO (
ECHO|SET /P="****%%A%%"
CALL:Wait 1
)
GOTO:EOF
:Wait
SET /A "delay=%~1+1"
CALL PING 127.0.0.1 -n %delay% > NUL
GOTO:EOF
作为@xmechanix回答的补充,通过将内容写入一个文件,我注意到:
echo | set /p dummyName=Hello World > somefile.txt
这将在打印的字符串的末尾添加一个额外的空格,这可能是不方便的,特别是因为我们试图避免在字符串的末尾添加一个新行(另一个空白字符)。
幸运的是,引用要打印的字符串,即使用:
echo | set /p dummyName="Hello World" > somefile.txt
将打印结尾不带换行符或空格字符的字符串。
使用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个很棒的脚本编写技巧。 下载页面还包含其他三个有用的工具包。
你可以从gnuwin32 (coreutils包)中使用“tr”删除换行符
@echo off
set L=First line
echo %L% | tr -d "\r\n"
echo Second line
pause
顺便说一下,如果您正在编写大量脚本,gnuwin32是一个金矿。