Windows Internal CMD ECHO 的(非官方)文档展示了一些有趣的技巧。但是,我还没有找到 回显单个字符 的方法。

快速说明,下面使用的 od 来自 Git(或 Gow)安装

例如,这个 echo 是带有“windows”换行符 ('a') 的 \r\n:

>echo a| od -A x -t x1z -v -
000000 61 0d 0a                                         >a..<
000003

而这个 trick (现在也在文档中)echo 什么都没有:
><nul (set/p _any_variable=)| od -A x -t x1z -v -
000000

所以我希望这只会回应“a”:
><nul (set/p _any_variable=a)| od -A x -t x1z -v -
000000 61 20                                            >a <
000002

但它在最后增加了额外的空间。

可以只做一个字符吗?

@Aacini 在 下面的评论中正确回答了(第一个问题),但如果他没有创建答案,这里是:
>set /P "=a" < NUL | od -A x -t x1z -v -
000000 61                                               >a<
000001

是否有任何技巧可以像 UNIX echo 那样使用 -n(无新行)和 -e( 使用反斜杠解释 )变得更精确,所以我可以类似这样的输出:
>unix_echo -n -e "a\n" |  od -A x -t x1z -v -
000000 61 0a                                            >a.<
000002

最佳答案

set /P 命令用于提示用户并接受输入。例如:

set /P "name=Enter your name: "

此命令显示提示消息并将光标置于其后。我们可以很好地利用这个行为来显示一个不以CR+LF结尾的“提示”,然后完成将Stdin重定向到NUL的虚拟输入。在这种情况下,不需要变量名称:
set /P "=Text with no CR+LF at end" < NUL

这样,要仅输出一个字符,请使用以下命令:
set /P "=a" < NUL

请注意,set /P 命令省略了提示消息中的任何前导空格。这意味着不能使用此方法仅显示空格。

关于windows - 如何让 Windows CMD ECHO 只回显一个字符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36019010/

10-11 22:45
查看更多