【问题标题】:Batch File If Statements causing close of CMD and not working批处理文件 If 语句导致 CMD 关闭且不起作用
【发布时间】:2021-04-30 17:36:34
【问题描述】:

我正在创建一个应该很简单的批处理文件,它允许我输入一个班级名称,它将带我到正确的谷歌教室。但是,即使我输入了“社会研究”这个词,我的 if 语句也不起作用。它不会带我去我的教室,最重要的是,CMD 刚刚关闭。当我删除 If 语句行时,代码工作正常,输入类后 cmd 保持打开状态。

    set /p class="Enter Class: "

    IF "%class%" /I EQU "Social Studies" (START https://classroom.google.com) 
    
    cmd /k

【问题讨论】:

  • 如果您打开命令提示符窗口,输入if /? 然后按[ENTER] 键,您将学习如何正确使用该命令。此外,当您比较字符串时,您应该使用== 而不是EQU。我也很想知道你为什么在最后调用一个新的、基本上是空的命令提示符。另请注意,Set /P 在使用之前需要对输入进行一些特定的验证,不能相信您的最终用户只输入预期的内容,无论是意外还是其他。
  • 我很想知道您在哪里找到了 IF 命令的用法示例。
  • 我刚才解决了这个问题,我忘了我是怎么做到的。 cmd/k 只是让它在完成后不会关闭。

标签: if-statement batch-file


【解决方案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://classroom.google.com)
    PAUSE
    

    最后的PAUSE 将使CMD在完成后保持打开状态

    【讨论】:

    • 为什么要删除/I 选项?
    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    • 2017-08-01
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多