我已经知道如何将字母序列添加到菜单中(使用 ExitCodeAscii link),但这种方法会使输出变慢。
有人知道用简单代码更快的方法吗?
我已经尝试过这段代码:(只是示例)
@echo off
set "AZ1=ABCDEFGHIJKLMNOPQRSTUVWXYZ"
set "AZ2=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"
set "menu= one two three four five"
for %%A in (%AZ2%) do for %%M in (%menu%) do echo [%%A] %%M
pause
输出:
[A] one
[A] two
[A] three
[A] four
[A] five
[B] one
[B] two
[B] three
etc...
我想要输出:
[A] one
[B] two
[C] three
[D] four
[E] five
每次运行外部循环时都会执行内部
for
循环。你不想这样。@echo off
setlocal enabledelayedexpansion
set "AZ1= ABCDEFGHIJKLMNOPQRSTUVWXYZ"
set "menu= one two three four five"
set count=0
for %%M in (%menu%) do (
set /a count+=1
call echo [%%AZ1:~!count!,1%%] %%M
)
@ECHO OFF
SETLOCAL
set "AZ1=ABCDEFGHIJKLMNOPQRSTUVWXYZ"
set "AZ2=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"
set "menu= one two three four five"
for %%M in (%menu%) do SET "assign=y"&for %%A in (%AZ2%) do IF DEFINED assign IF NOT DEFINED option[%%A] SET option[%%A]=%%M&SET "assign="&ECHO [%%A] %%M
SET option
GOTO :EOF
通常的做法是在初始
setlocal
之后直接使用 @echo off
命令。这会丢弃批处理结束时对环境所做的任何更改,因此由一个批处理文件建立的变量不会影响可能在同一会话中运行的任何其他批处理。
如果您从“快捷方式”运行,错误消息将不可见(它们会出现,但批处理会继续并清除它们)。您可以在语句后放置
pause
并返回错误,但最好打开“命令提示符”并从那里运行批处理,以便窗口保持打开状态并显示任何(错误)消息.