這是我調用其他批處理文件的短批處理程序。代碼如下。批量「轉到」或IF語句導致不同的代碼塊
@echo off
setlocal EnableExtensions EnableDelayedExpansion
:choice
cls
@call makeline
echo Choose an action from below:
@call makeline
echo.
echo 1. Disassemble a suspect malware.
echo 2. Image a disk drive.
echo 3. Generate MD5 hash of a file.
echo 4. View Report.
echo 5. Exit Malverse 1.2
echo.
@call makeline
set "ch=%gch1%"
goto :chCheck
:chPrompt
echo Select by typing in the number [1-5] and hit the RETURN key.
set /p "ch=[1-5]: "
:chCheck
if not defined ch goto :chPrompt
echo %ch%
pause
if %ch% == 1 (
set ch=
GOTO disasm
)
if %ch% == 2 (
set ch=
GOTO image
)
if %ch% == 3 (
set ch=
GOTO hash
)
if %ch% == 4 (
set ch=
GOTO view
)
:hash
@call makeline
@call hasher
:disasm
@call makeline
@call disassembler
:image
@call makeline
@call imager
:view
@call makeline
@call report
pause
endlocal
這個程序應該給出輸出,比方說,如果我從菜單中輸入1作爲選項,它應該調用反彙編程序文件。
Option: 1
Disassembler 2.2.
然而,在做這之前,它一直呼籲這應該僅由4選項調用運行使用3作爲選擇另一個測試後的報表文件,這一次,它被稱爲散列器文件,但稍後再次調用報告文件。
測試用例:1分的結果
Option: 1
Report viewer opened.
測試案例:3分的結果
Option: 3
Hasher begins here.
Report viewer opened.
好奇,我還檢查該文件的名稱和它似乎完全匹配。我檢查了一些網站,但無濟於事。另外,我嘗試使用代碼頂部的@echo進行排序,但沒有顯示錯誤消息。請幫忙。
其實這將是下一個增強。不過,我也嘗試添加GOTO選擇,但它仍然沒有按預期調用反彙編程序文件。順便說一下,我想知道它是如何下降到 :disasm 如何解決它? – mikey13579