Board logo

标题: [文本处理] [20170624更新]ANSI字符打印工具-PrintANSI [打印本页]

作者: 老刘1号    时间: 2017-6-10 00:05     标题: [20170624更新]ANSI字符打印工具-PrintANSI

http://bcn.bathome.net/s/tool/index.html?key=PrintANSI
自己写的小工具,源码就不放了
想要研究的可以联系我

2017.6.24使用Net2.0重新编译
增强了兼容性。
正常情况无需多余运行库,
自带的NET即可运行

.Net程序有个特点
开机第一次运行速度较慢(中间码编译为汇编)
第二次运行速度正常
但是调用仍然慢的可以
所以请尽量少调用,将参数拉长,使得一次调用程序可以打印较多的字符来提高效率(下面的Ascii表是反例,真的很慢...)
由于CMD限制,控制字符和可显示字符可以正常重定向(1-7eh和80h)
超过80h的就无法正常重定向
所以想要生成高位Hex大于80的字符也就是双字节字符(由最高二进制位为1的Byte型高位和下一个Byte共同组成,比如汉字),请将双字节字符的ANSIHEX直接以四位一组的形式传参

老刘制作——ANSI/Ascii字符屏幕打印工具
用法:  PrintANSI <ANSI-Hex> ...
示例:
打印”Hollo,world!“
PrintANSI 48 6F 6C 6C 6F 2C 77 6F 72 6C 64 21
打印“你好,世界”
PrintANSI C4E3 BAC3 A3AC CAC0 BDE7
打印控制字符
PrintANSI 1 2 3 4
蜂鸣
PrintANSI 7

实例:
批处理版Ascii表——
  1. @Echo off&Title Ascii码表
  2. For %%a in (PrintANSI.exe) Do ^
  3. If "%%~$PATH:a" EQU "" ^
  4. If Not Exist .\PrintANSI.exe ^
  5. Echo 第三方丢失,请到批处理之家第三方区下载。&&pause&&goto :eof
  6. mode 30,100
  7. %在此感谢netbenton斑竹的10进制转16进制函数% set "d-h=setlocal enabledelayedexpansion&set/a dx=#a#&set xs=0123456789abcdef&(for /l %%z in (1,1,4) do set /a x%%z=dx%%16,dx=dx/16)&(for /f "tokens=1-4" %%1 in ("!x1! !x2! !x3! !x4!") do set hx=!xs:~%%4,1!!xs:~%%3,1!&(if !hx!==00 set hx=)&(for %%z in ("!hx!!xs:~%%2,1!!xs:~%%1,1!") do endlocal&set #a#=%%~z))"
  8. Echo 字符 16进制 10进制
  9. Echo [空格] 20 32
  10. Set /a 初始=0x20,步长=1,终止=0x7e,循环计数变量=初始
  11. :loop
  12. Set /a 循环计数变量+=步长
  13. Set /a 十六进制=十进制=%循环计数变量%
  14. %d-h:#a#=十六进制%
  15. PrintANSI %十六进制%
  16. Echo %十六进制% %十进制%
  17. IF %循环计数变量% LSS %终止% GOTO LOOP
  18. Echo [退格] 7f 127
  19. Pause
复制代码

作者: hlzj88    时间: 2017-9-3 19:39

回复 1# 老刘1号
附件出错,你替换下吧。
作者: 老刘1号    时间: 2017-9-4 20:50

回复 2# hlzj88


    这里测试没有问题。
你用的是什么压缩软件呢?




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2