本帖最后由 CrLf 于 2014-11-23 18:03 编辑
getc.com 和功能相似的 getch.com 的区别在于 getc.com 把接收的字符显示在 StdIn 中,而不通过返回值与 cmd 交互
好处是更直观和简短,缺点是这样就不能使用返回值特有的 %=ExitCode% %=ExitCodeAscii% 变量了- @echo off
-
- echo>getc.com ,RP_4P0E`0Eb@@3!= //getc.com 内嵌方案
- for /f "delims=" %%a in ('"getc&getc&getc&getc&getc&getc&getc&getc"') do (
- echo 您输入的是 "%%a"
- )
- rem 等待输入,直到接收了 8 个字节,返回给 cmd
- rem 生成并调用 getc.com
-
- del /f getc.com>nul
- rem 删除 getch.com
-
- pause
复制代码 debug 汇编指令:- debug getc.com
- a
- sub al,52
- push ax
- pop di
- xor al,50
- xor [di+60],al
- xor [di+62],al
- inc ax
- inc ax
- db 33 21 3d
-
- rcx
- 11
- w
- q
复制代码 汇编原型:复制代码 -------------------------------------------------------------
另附仅长 11 个字节的精简版:- @echo off
-
- for /f "delims=U" %%a in ('cmd /u /c echo 唉')do set "Tab字符=%%a"
- rem 因为论坛会把 Tab 字符变成空格,所以这里先把它保存在变量中
-
- echo VX0L%Tab%..瓮廾>getc.com
- rem 实际长度为 11 个字节
-
- for /f "delims=" %%a in ('getc.com') do echo Char="%%a"
- pause
复制代码
|