在同一条线上回响

7 windows batch-file echo windows-server-2003

我看了你的数据库之前的问题,我没有尝试答案,但我试试.

我想写下面的代码:

echo Executing backup....
backup procedure
echo Ok
Run Code Online (Sandbox Code Playgroud)

但输出应该是:

Executing backup... Ok
Run Code Online (Sandbox Code Playgroud)

那可能吗?!

jeb*_*jeb 9

我想你正在使用dos/nt-batch.

可以使用set/p命令,因为set/p不会打印CrLf

set /p "=Executing backup...." <nul
echo OK
Run Code Online (Sandbox Code Playgroud)

也可以用CR字符擦除该行.重要的是要知道在set/p前面的空格字符被忽略(在Vista中,而不是在XP中),所以!cr!必须放在后期或末尾.CR只能与delayedExpansion一起显示,因为%cr%有效,但CR字符在百分比扩展阶段(或直接在此阶段之后)被删除,但不在延迟扩展阶段.

仅使用一行显示的计数器示例

@echo off
setlocal EnableDelayedExpansion EnableExtensions


call :CreateCR
for /l %%n in (1,1,10000) do (
    set /P "=Count %%n!CR!" <nul
)
echo(
goto :eof

:CreateCR
rem setlocal EnableDelayedExpansion EnableExtensions
set "X=."
for /L %%c in (1,1,13) DO set X=!X:~0,4094!!X:~0,4094!

echo !X!  > %temp%\cr.tmp
echo\>> %temp%\cr.tmp
for /f "tokens=2 usebackq" %%a in ("%temp%\cr.tmp") do (
   endlocal
   set cr=%%a
   goto :eof
)
goto :eof
Run Code Online (Sandbox Code Playgroud)

编辑:解释,如何cr创建变量(完成一个技巧)

将变量设置X为单个点(字符本身不重要)后,通过以下方式重复变为8188个字符for /L %%c in (1,1,13) DO set X=!X:~0,4094!!X:~0,4094!

然后将变量,两个空格以及CR和LF都回显到一个文件中echo !X! > %temp%\cr.tmp(注意!X!和之间的两个空格>和自然行结尾在内部回应修正)

我们现在有8192个字符,但数据缓冲区只能容纳8191个字符,因此最后一个字符(换行符)将被删除!

在下一行中echo\>> %temp%\cr.tmp,另一个CR/LF集合被附加到文件中(\在命令中只是输出没有任何条形的回车和换行,因为echo它的自己将输出ECHO is ON/OFF),这很重要,因为单个CR无法读取一行的结尾(稍后).

所以该文件现在包含 <8188 .'s><SPACE><SPACE><CR><CR><LF>

for /f "tokens=2 usebackq" %%a in ("%temp%\cr.tmp") do读取第二令牌时,delimters是标准的空间和标签上,所以第二令牌是只有一个CR,如以下CR/LF作为标准的行结束除去.

最后,endlocal用于返回到环境,而临时变量X,ca现有的(如同endlocal在括号中,它允许设置crendlocal,其实需要在括号结束影响(也可以写成for /f "tokens=2 usebackq" %%a in ("%temp%\cr.tmp") do endlocal&set cr=%%a&goto :eof)

另外

这是我创建CR字符的第一种方法,但它需要一些时间和一个临时文件.
后来我看到了一种从copy /z命令中检索CR的简单方法.

for /f %%a in ('copy /Z "%~dpf0" nul') do set "CR=%%a"
Run Code Online (Sandbox Code Playgroud)


Pio*_*pla 5

在 Posix 系统 (Linux) 上试试这个

echo -n "Executing backup.... "
echo -n "backup procedure "
echo "Ok"
Run Code Online (Sandbox Code Playgroud)

在 Windows 上要困难得多。你将需要使用这样的东西:

@echo off
echo|set /p ="Executing backup...."
echo|set /p =" backup procedure"
Run Code Online (Sandbox Code Playgroud)

检查这篇文章:http : //www.pcreview.co.uk/forums/showpost.php?s= 1a20b16775d915998b30bd76a0ec5d35& p= 4432915& postcount=7