本帖最后由 CrLf 于 2012-12-23 15:15 编辑
方案一,关键代码为 ,HP_4Y0EZ0Eb508-00,!5D35Dw,!,内嵌于代码中使用,代码短,但其中的特殊字符需视情况转义:- @echo off
-
- echo>getch.com ,HP_4Y0EZ0Eb508-00,!5D35Dw,! //getch.com 内嵌方案
- getch
- rem 生成并调用 getch.com
-
- echo %errorlevel%
- del /f getch.com>nul
- rem 删除 getch.com
-
- pause
复制代码 方案二,关键代码为 ::,HP_4Y0E\0Ed508-00,!5D35Dw,!,代码稍长,既可位于头部标签也可内嵌使用,更通用:- ::,HP_4Y0E\0Ed508-00,!5D35Dw,! //getch.com 标签头方案
- @echo off
-
- type %0>getch.com&&getch
- rem 生成并调用 getch.com
-
- echo %errorlevel%
- del /f getch.com>nul
- rem 删除 getch.com
-
- pause
复制代码 实例:- @echo off&chcp 437|GRAFTABL>nul 936
- echo 输入任意字符,获取 asc 在%%errorlevel%% 中
- echo;
-
- echo>getch.com ,HP_4Y0EZ0Eb508-00,!5D35Dw,! //在这个示例中,使用的是内嵌方案
- getch
-
- echo ASC = %errorlevel%
- for /f "tokens=* delims=0" %%a in ("%=exitcode%") do echo HEX = 0x%%a
- echo CHR = %=exitcodeascii%
- pause
复制代码 汇编原型其实只有 8 字节,作用是获取一个输入字符,并从退出码中返回该字符的 asc:- mov ah,8
- int 21
- mov ah,4c
- int 21
复制代码 但为了让所有字节都在 0x20-0x7f 范围内以便写入 bat 使用,所以长度被扩到了 30 字节上下,不知哪位有办法再压缩下。 |