kowala's home

kowala's home
這裡是我的學習筆記,陸續增加中。
http://kowala21.blogspot.com

2011-07-19

Win7 批次檔 for 寫法

我發現有些指令都沒動作了,像是以前常用的 inkey.com [1] ,現在都不行用了!
剛測試還能跑 for 迴圈,簡單寫個 Memo 起來備查。

測試 kb.exe  <-- 這是我要跑的目標程式
輸入檔 input01, input02, input03 .... input20
輸出結果 01.out,  02.out,  03.out,  ... 20.out

執行畫面轉向到 dbg.txt

使用了兩個批次檔,一個跑迴圈,一個帶參數執行,FOR 迴圈指令,我是寫成一行,沒換行。

go.bat
-------------------檔案開始-----------------------
@echo off
echo Debug for KB.EXE v.1.0.1 > dbg.txt
FOR %%A IN (01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20) DO call gokb input%%A %%A >> dbg.txt
del *.out
type dbg.txt
echo.
echo You can reading dbg.txt for test detail. @_@
echo.
pause
---------------------檔案結束---------------------


gokb.bat
----------------------檔案開始--------------------
@echo off
echo.
echo  ========================= start %1 =========================
kb %1 %2.out
-------------------檔案結束-----------------------

在 win7 下可以跑
ASCII 表
這也是很常用的ASCII對照表: 


註:
[1].inkey.com 是讀鍵值小程式,通常都是搭配 if errorlevel==27  goto xxx 來使用
製作方法如下( 27 = 0x1B = ESC )

製作 inkey.com ,由 Windows 內建的工具 debug 來製作即可,按下開始按鈕後,上面搜尋欄位輸入 cmd 再按 enter ,就會跑出命令列視窗,


 輸入debug 就可以叫出如下畫面,然後依照下圖輸入組合語言指令,輸入完成後,按 Ctrl+C 中止輸入,指定長度 rcx 為 24,指定名稱 n,再寫出 w,離開 q ... 就完成了。

接受合法鍵值 ESC, 0-9, a-z, A-Z
其他鍵值會重新輸入,直到正確鍵值為止,傳回鍵值可以用 errorlevel 去接

Microsoft Windows [???? 6.1.7600]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\aaa>debug

-a 100
1392:0100 mov ah,00
1392:0102 int 16
1392:0104 cmp al,1b
1392:0106 je 120
1392:0108 cmp al,30
1392:010A jl 0100
1392:010C cmp al,7a
1392:010E jg 100
1392:0110 cmp al,39
1392:0112 jle 120
1392:0114 cmp al,61
1392:0116 jge 120
1392:0118 cmp al,41
1392:011A jl 100
1392:011C cmp al,5a
1392:011E jg 100
1392:0120 mov ah,4c
1392:0122 int 21
1392:0124 ^C
-rcx
CX 0000
:24
-n inkey
-w
Writing 00024 bytes
-q

C:\Users\aaa>

再把它改名為 inkey.com 就能用了,但在 windows 環境中不能跑 = =,只能用在 dos 環境。

沒有留言:

張貼留言

請提供您的寶貴意見 ;-)