windows - 在同一行中呼应

标签 windows batch-file windows-server-2003 echo

我看过你数据库之前的问题,我没有尝试回答,但我尝试了。

我想写下面几行代码:

echo Executing backup....
backup procedure
echo Ok

但输出应该是:

Executing backup... Ok

这可能吗?!

最佳答案

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

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

set /p "=Executing backup...." <nul
echo OK

也可以删除带有 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

编辑:解释,变量cr如何已创建(通过技巧完成)

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

然后变量、两个空格和一个 CR 和 LF 被回显到一个文件中 echo !X! > %temp%\cr.tmp (注意 !X!> 之间的两个空格和自然行结尾 echo 内部修改)

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

在下一行echo\>> %temp%\cr.tmp , 另一个 CR/LF set 被附加到文件中(命令中的 \ 只是不输出回车符和换行符,因为 echo 本身将输出 ECHO is ON/OFF ),这很重要,作为单个 CR无法在行尾阅读(稍后会详细介绍)。

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

for /f "tokens=2 usebackq" %%a in ("%temp%\cr.tmp") do读取第二个标记,分隔符是标准空格和制表符,因此第二个标记只有一个 CR ,如下CR/LF作为标准行尾被删除。

最后 endlocal用于返回到没有临时变量的环境 X , ca existing(与括号中的endlocal一样,它允许cr的设置在括号末尾的endlocal实际生效之前(也可以写成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"

关于windows - 在同一行中呼应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4097041/

相关文章:

Java:WatchService 在复制内容之前得到通知

batch-file - 如何使用WinRAR将文件夹中的每个子文件夹压缩到一个单独的RAR归档文件中?

windows - Windows 上的汇编

c# - 运行后如何隐藏WinForm?

batch-file - 用于从 FTP 下载名称以给定字符串开头的文件的批处理文件

windows - 为什么 Cygwin 可以运行 .bat 脚本?

svn - VisualSVN 错误 – 修订文件缺少尾随换行符

asp.net - Sys 未定义 - 仅 IE 7 中的 ajax 问题

html - 利用浏览器缓存

php 在 Windows 7 上通过 nodejs 使用 lessc 编译 less 文件