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/