如何在 set /p = command [batch] [duplicate] 中将句子设置为选项

Posted

技术标签:

【中文标题】如何在 set /p = command [batch] [duplicate] 中将句子设置为选项【英文标题】:how to set sentences as a option in set /p = command [batch] [duplicate] 【发布时间】:2021-09-02 10:02:45 【问题描述】:

我知道这可能是一个新手问题,但如果 [something](在下面的代码中)超过 1 个单词,它只会关闭而不会将我发送到 [正确]。我不知道是否有一种方法可以指定用户输入多字串还是简单的 1 个字输入。

set/p something= input:  
if %something% equ goto correct
if %something% neq goto incorrect

我怀疑这些空格会混淆代码,并让它认为不是读取 [goto correct] 而是尝试读取第二个单词作为命令。任何修复都会有帮助,即使它有点高级。

【问题讨论】:

它们是字符串而不是整数,所以比较运算符应该是==。此外,您希望将输入与预期字符串进行比较,因此您需要在比较中包含该字符串。因此,您发布的两个示例应阅读为 If /I "%something%" == "Expected String" GoTo correctIf /I Not "%something%" == "Expected String" GoTo incorrect 【参考方案1】:

您需要将变量放在引号中,以便在 if 中进行比较时将其检测为字符串。

例子:

set /p something="Input any text for me: "
echo Output: %something%

if "%something%" EQU "Hello World" echo OK
if "%something%" NEQ "Hello World" echo NOT OK

【讨论】:

以上是关于如何在 set /p = command [batch] [duplicate] 中将句子设置为选项的主要内容,如果未能解决你的问题,请参考以下文章

Windows Bat 之For 循环

在Bat批处理中调用Powershell脚本

bat中获取bat命令结果

bat中运用for /r命令

bat脚本如何将命令执行的结果赋值给变量

BAT 批处理脚本教程