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)
该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命令会忽略提示消息中的任何前导空格.这意味着无法使用此方法仅显示空格.