【发布时间】:2014-05-10 17:34:42
【问题描述】:
这是一个简短的批处理程序,用于调用其他批处理文件。代码如下。
@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 进行调试,但没有显示错误消息。请帮忙。
【问题讨论】:
标签: batch-file block goto