如何让Windows CMD ECHO只回显一个字符?

Jos*_*all 6 windows cmd batch-file echo

Windows Internal CMDECHO的(非官方)文档显示了一些有趣的技巧.但是,我还没有找到回声单个角色的方法.

od下面使用的快速注释来自Git(或Gow)安装

例如,这个echo是'a''windows'newline(\r\n):

>echo a| od -A x -t x1z -v -
000000 61 0d 0a                                         >a..<
000003
Run Code Online (Sandbox Code Playgroud)

这个技巧(现在也在文档中)没有回应:

><nul (set/p _any_variable=)| od -A x -t x1z -v -
000000
Run Code Online (Sandbox Code Playgroud)

所以我希望这只能回应'a':

><nul (set/p _any_variable=a)| od -A x -t x1z -v -
000000 61 20                                            >a <
000002  
Run Code Online (Sandbox Code Playgroud)

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

是否可以只做一个角色?

@Aacini在下面的评论中正确回答(第一个问题),但如果他没有创建答案,这里是:

>set /P "=a" < NUL | od -A x -t x1z -v -
000000 61                                               >a<
000001
Run Code Online (Sandbox Code Playgroud)

以及是否有任何技巧,以获得更精确的类似于UNIX的echo-n(无新线)和-e(使用反斜线解释),所以我可以输出类似这样:

>unix_echo -n -e "a\n" |  od -A x -t x1z -v -
000000 61 0a                                            >a.<
000002
Run Code Online (Sandbox Code Playgroud)

Aac*_*ini 5

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

set /P "name=Enter your name: "
Run Code Online (Sandbox Code Playgroud)

此命令显示提示消息并将光标放在其后面.我们可以很好地利用这种行为来显示一个以CR + LF结尾的"提示",然后完成将Stdin重定向到NUL的虚拟输入.在这种情况下,不需要变量名称:

set /P "=Text with no CR+LF at end" < NUL
Run Code Online (Sandbox Code Playgroud)

这样,要输出一个字符,请使用:

set /P "=a" < NUL
Run Code Online (Sandbox Code Playgroud)

请注意,set /P命令会忽略提示消息中的任何前导空格.这意味着无法使用此方法仅显示空格.