批处理文件 If 语句导致 CMD 关闭且不起作用
Posted
技术标签:
【中文标题】批处理文件 If 语句导致 CMD 关闭且不起作用【英文标题】:Batch File If Statements causing close of CMD and not working 【发布时间】:2021-04-30 17:36:34 【问题描述】:我正在创建一个应该很简单的批处理文件,它允许我输入一个班级名称,它将带我到正确的谷歌教室。但是,即使我输入了“社会研究”这个词,我的 if 语句也不起作用。它不会带我去我的教室,最重要的是,CMD 刚刚关闭。当我删除 If 语句行时,代码工作正常,输入类后 cmd 保持打开状态。
set /p class="Enter Class: "
IF "%class%" /I EQU "Social Studies" (START https://clas-s-room.google.com)
cmd /k
【问题讨论】:
如果您打开命令提示符窗口,输入if /?
然后按[ENTER]
键,您将学习如何正确使用该命令。此外,当您比较字符串时,您应该使用==
而不是EQU
。我也很想知道你为什么在最后调用一个新的、基本上是空的命令提示符。另请注意,Set /P
在使用之前需要对输入进行一些特定的验证,不能相信您的最终用户只输入预期的内容,无论是意外还是其他。
我很想知道您在哪里找到了 IF
命令的用法示例。
我刚才解决了这个问题,我忘了我是怎么做到的。 cmd/k 只是让它在完成后不会关闭。
【参考方案1】:
IF /I "%class%" EQU "Social Studies"...
if
语句的解析逻辑非常具体; if [/i][NOT] arg1 op arg2
其中/i
和not
是可选的,但必须如果使用,请按此顺序使用。
您的代码看到/i
,它需要一个比较运算符并生成一个语法错误。
当您使用点击并傻笑的方法执行批处理时,如果发现语法错误,批处理窗口通常会关闭。您应该改为 open a 'command prompt' 并从那里运行您的批处理,以便窗口保持打开状态并显示任何错误消息。
【讨论】:
【参考方案2】:您可以写掉@echo,以防止显示批处理文件的提示和内容。 我用 == 替换了你的 EQ,现在它可以工作了:
@echo off
set /p class="Enter Class: "
IF "%class%"=="Social Studies" (START https://clas-s-room.google.com)
PAUSE
最后的PAUSE
将使CMD在完成后保持打开状态
【讨论】:
为什么要删除/I
选项?以上是关于批处理文件 If 语句导致 CMD 关闭且不起作用的主要内容,如果未能解决你的问题,请参考以下文章