ccy*_*ccy 8 windows batch-file echo
在Windows中是否有任何Linux"echo -e"等效,所以我可以使用"echo -e\xnnn"打印出ASCII码为十六进制值nnn的字符?
jeb*_*jeb 12
没有等价物,但你可以编写自己的功能.
我会将问题分成两部分.
从十六进制转换为十进制很简单
set "myHex=4A"
set /a decimal=0x%myHex%
Run Code Online (Sandbox Code Playgroud)
将数字转换为ASCII更加棘手,它取决于所需的ASCII范围
如果只需要从32(空格)到126'〜'的范围,则可以使用=ExitCodeAscii
变量
set "decimal=%1"
cmd /c exit /b %decimal%
echo "%=ExitCodeAscii%"
Run Code Online (Sandbox Code Playgroud)
如果您还需要一些特殊的字符,如CR
,LF
,ESC
,DEL
,,可以用纯批量创建.
如果你需要更多,你可以使用vbscript.
更通用的方法是使用命令forfiles
(Dostips:生成几乎任何字符......)
回声e.bat
@echo off
set "arg1=%~1"
set "arg1=%arg1:\x=0x%"
forfiles /p "%~dp0." /m "%~nx0" /c "cmd /c echo(%arg1%"
Run Code Online (Sandbox Code Playgroud)
您可以通过调用它echo-e.bat "Hello\x01\x02\x03"
,你会得到Hello???
.
Dave Benham编写了一个名为CharLib的批处理文件字符操作库.除其他外,该库能够将十六进制转换为ascii,适用于1..255范围内的所有字符(不能为0 - > NUL).
有关详细信息,请参阅线程是否可以将字符转换为ASCII值?在DosTips.com上
如果您只需要在批处理脚本中使用单个有问题的字符(例如控制代码),那么它是剪切和粘贴的宝贵资源.
例如,在批处理脚本中打印CR字符(不带LF)...
@echo off
setlocal enableextensions enabledelayedexpansion
for /f %%a in ('copy /Z "%~dpf0" nul') do set "ASCII_13=%%a"
echo 1234567890!ASCII_13!xxxxxx
Run Code Online (Sandbox Code Playgroud)
最终会按预期在控制台上打印"xxxxxx7890".