- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个正在编写的程序的动态选择列表。我让它正常工作,因此它将根据 count
变量更改 CHOICE
选项,但现在我正在努力使 errorlevel
动态化以及。这是我的代码:
SETLOCAL EnableDelayedExpansion
@ECHO off
SET count=7
SET ph=
FOR /L %%a IN (1,1,%count%) DO (
SET ph=!ph!%%a
ECHO !ph!
)
CHOICE /C Q%ph%
IF errorlevel (I don't have a variable for this) (
echo "in if" & pause
)
IF errorlevel 1 echo "out of if" & pause
我的想法是将错误级别设置为用户输入的值(例如,用户输入 7 作为他们的选择,错误级别变为 7)我想这样做的原因是因为我需要 errorlevel
传递除 1 以外的所有内容,这是为退出选项保留的(这就是为什么我在那里有“Q”)非常感谢任何意见和建议!谢谢!
最佳答案
我建议针对此任务使用以下批处理代码:
@ECHO OFF
SETLOCAL EnableExtensions EnableDelayedExpansion
SET count=7
SET ph=
FOR /L %%a IN (1,1,%count%) DO SET ph=!ph!%%a
%SystemRoot%\System32\choice.exe /C Q%ph%
IF NOT ERRORLEVEL 2 ECHO Bye^^!& GOTO :EOF
SET /A UserChoice=%ERRORLEVEL%-1
ECHO You have chosen %UserChoice%.
PAUSE
IF NOT ERRORLEVEL 2
表示如果 CHOICE 的退出代码不大于或等于 2,这与 LESS THAN 2 相同,则执行 ECHO 和 GOTO 退出此批处理文件的处理。
命令 IF 不会修改 ERRORLEVEL
的值,如
中所述 What are the ERRORLEVEL values set by internal cmd.exe commands?
也可以先将CHOICE的退出代码赋给一个减1的环境变量,然后通过比较该值与0
来进行退出比较.
@ECHO OFF
SETLOCAL EnableExtensions EnableDelayedExpansion
SET count=7
SET ph=
FOR /L %%a IN (1,1,%count%) DO SET ph=!ph!%%a
%SystemRoot%\System32\choice.exe /C Q%ph%
SET /A UserChoice=%ERRORLEVEL%-1
IF %UserChoice% == 0 ECHO Bye^^!& GOTO :EOF
ECHO You have chosen %UserChoice%.
PAUSE
不建议使用名称为 choice
的环境变量,因为这样很难在包含外部命令 CHOICE 的批处理文件中搜索此环境变量是使用 UserChoice
的原因。
出于安全原因,命令 CHOICE 指定了完整的限定文件名(文件路径 + 文件名 + 文件扩展名)。 Windows 命令处理器不需要在当前目录和localPATHEXT 中列出的文件扩展名中搜索choice.*
> 使用完全限定文件名的环境变量 PATH
。这使得批处理文件能够抵抗损坏的 system PATH
包含最重要的文件夹路径 %SystemRoot%\System32
之前的文件夹路径还包含一个 choice.*
文件,其文件扩展名在 PATHEXT
中列出。 local 环境变量 PATH
在运行此批处理文件时根本不需要存在,因为使用了可执行文件 CHOICE 的完整限定文件名。如果用户在运行此目录的当前目录中创建名为 choice.bat
或 choice.cmd
的批处理文件,则完全限定文件名也无关紧要%SystemRoot%\System32
之前 cmd.exe
正在搜索 PATH
中的批处理文件或任何其他目录。
关于batch-file - 如何将来自 CHOICE 命令的用户输入保存到一个变量中,以便稍后在错误级别中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51507932/
我是一名优秀的程序员,十分优秀!