gpt4 book ai didi

input - 如何在 .bat 中请求和接收用户输入并使用它来运行某个程序?

转载 作者:行者123 更新时间:2023-12-03 09:08:06 26 4
gpt4 key购买 nike

这是我到目前为止

@echo off
:Ask
echo Would you like to use developer mode?(Y/N)
set INPUT=
set /P INPUT=Type input: %=%
If %INPUT%=="y" goto yes
If %INPUT%=="n" goto no
If %INPUT%=="Y" goto yes
If %INPUT%=="N" goto no
:yes
java -jar lib/RSBot-4030.jar -dev
echo Starting RSbot in developer mode
:no
java -jar lib/RSBot-4030.jar
echo Starting RSbot in regular mode
pause

无论哪种方式,如果用户输入 y 或 n,它总是在 -dev 模式下运行。

如果答案是肯定的,我如何让它在 -dev 模式下运行,如果答案是否定的,我如何让它在常规模式下运行。另外,如果输入不是 Y、N、y 或 n,我如何让它再次询问?

最佳答案

如果输入是 N ,您的 IF 线评估如下:

If N=="y" goto yes 
If N=="n" goto no


也就是你在比较 N"y" ,然后 "n"等,包括 "N" .除非用户以某种方式决定输入 "N",否则您永远不会得到匹配项。或 "y" (即四个字符中的任何一个,但用双引号括起来)。

所以你需要删除 "来自周围 y , n , YN或者把它们放在周围 %INPUT%在你的条件语句中。我会推荐后者,因为这样你至少会转义一些在批处理脚本中具有特殊含义的字符(如果用户设法输入它们)。所以,这是你应该得到的:
If "%INPUT%"=="y" goto yes 
If "%INPUT%"=="n" goto no
If "%INPUT%"=="Y" goto yes
If "%INPUT%"=="N" goto no

顺便说一句,您可以通过应用 /I 来减少条件的数量。切换到 IF声明,像这样:
If /I "%INPUT%"=="y" goto yes 
If /I "%INPUT%"=="n" goto no
/I switch 使比较不区分大小写,因此您不需要单独检查不同大小写的字符串。

另一个问题是,在执行开发模式命令后,不会跳过其他命令,因此,如果用户同意在开发模式下运行 Java,他将同时在开发模式和非开发模式。所以也许你需要在你的脚本中添加这样的东西:
...
:yes
java -jar lib/RSBot-4030.jar -dev
echo Starting RSbot in developer mode
goto cont
:no
java -jar lib/RSBot-4030.jar
echo Starting RSbot in regular mode
:cont
pause

最后,为了解决处理错误输入的问题,您可以简单地添加另一个(无条件) goto命令就在条件语句之后,就在 yes 之前标签,即 goto Ask , 返回到显示提示并请求输入的脚本的开头,或者您也可以在跳转之前添加另一个 ECHO 命令,解释输入不正确,如下所示:
@echo off
:Ask
echo Would you like to use developer mode?(Y/N)
set INPUT=
set /P INPUT=Type input: %=%
If /I "%INPUT%"=="y" goto yes
If /I "%INPUT%"=="n" goto no
echo Incorrect input & goto Ask
:yes
...

注意:@xmjx 在他们的回答中也解决了这里提到的一些问题,我完全承认。

关于input - 如何在 .bat 中请求和接收用户输入并使用它来运行某个程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12021033/

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