gpt4 book ai didi

batch-file - 如何将来自 CHOICE 命令的用户输入保存到一个变量中,以便稍后在错误级别中使用

转载 作者:行者123 更新时间:2023-12-04 14:08:47 24 4
gpt4 key购买 nike

我有一个正在编写的程序的动态选择列表。我让它正常工作,因此它将根据 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 相同,则执行 ECHOGOTO 退出此批处理文件的处理。

命令 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.batchoice.cmd 的批处理文件,则完全限定文件名也无关紧要%SystemRoot%\System32 之前 cmd.exe 正在搜索 PATH 中的批处理文件或任何其他目录。

关于batch-file - 如何将来自 CHOICE 命令的用户输入保存到一个变量中,以便稍后在错误级别中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51507932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com