【问题标题】:echo text with preceding spaces but without new line回显带有前面空格但没有换行符的文本
【发布时间】:2015-08-02 10:56:44
【问题描述】:

如果我使用<nul set/p= some textset/p "= some text"<nul,即使我在0xFF 代码中使用字符,前面的空格也会被删除。如何在没有尾随 CR/LF 的情况下在行首回显指定数量的空格?

【问题讨论】:

  • 目标也是脚本的速度。

标签: windows batch-file newline


【解决方案1】:

在行首添加退格符效果很好。

@echo off
:: define BS as a BackSpace character
for /f %%A in ('"prompt $H&for %%B in (1) do rem"') do set "BS=%%A"
set /p "=%bs%     some text"<nul
pause

【讨论】:

  • 可能以更短的方式存在?第二个for 看起来过分了。
  • @green 您只需执行第一行一次,即可生成环境变量。您可以找到其他方法,但它们会比较慢并且涉及外部命令。
  • 我知道该行的一次性使用,但我想知道,真的只有for 产生空输出吗?
  • @green for 命令正在生成一个不可见的控制字符。您可以使用能够嵌入控制字符的编辑器在脚本中输入退格键,前提是将来不会被其他文本编辑器删除。
  • 在我之前的评论中,我的意思是问题:“只是for 命令生成空输出(涉及命令提示符),或者也可以使用其他一些具有类似效果的命令?”。跨度>
【解决方案2】:

a) 如果文本在新行中回显,则只需在输出文本前添加退格字符即可。
&lt;nul set/p=[BS char here directly, without brackets] some text
在 ANSI 和 ASCII 代码表中,它的代码为 0x08
b) 如果文本需要作为已经存在的行的延续,则在 BS 字符之前额外添加一个非空格字符,例如“中间点”(0xFA)。
&lt;nul set/p=[MD char (0xFA), then BS char (0x08)] some text
在 WinXP 和 Win7 中运行良好。

【讨论】:

  • 有哪位大师,谁知道答案,适用于DOS?
猜你喜欢
  • 2016-05-26
  • 2023-03-04
  • 1970-01-01
  • 2020-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-16
  • 1970-01-01
相关资源
最近更新 更多