Batch file 批处理文件的条件IF函数

Batch file 批处理文件的条件IF函数,batch-file,Batch File,首先,这是一个围绕另一个问题的工作,但为了不使这个问题复杂化,我将不讨论最初的方法是什么 现在我尝试使用批处理文件来: 读取一个文本日志文件 循环到文件的倒数第二行 然后做一个条件检查,看看最后一个条目是确认某个进程已成功完成,还是另一条消息表明它没有成功完成 根据上面步骤3的结果,返回值0表示通过,返回值1表示失败,以便SSI可以解释结果 文本文件的名称作为参数输入批处理文件。 除了当我试图包含一个IF语句时,一切似乎都正常工作,此时它不会返回任何结果 谁能告诉我我做错了什么在这里,我们试图遵

首先,这是一个围绕另一个问题的工作,但为了不使这个问题复杂化,我将不讨论最初的方法是什么

现在我尝试使用批处理文件来:

  • 读取一个文本日志文件
  • 循环到文件的倒数第二行
  • 然后做一个条件检查,看看最后一个条目是确认某个进程已成功完成,还是另一条消息表明它没有成功完成
  • 根据上面步骤3的结果,返回值0表示通过,返回值1表示失败,以便SSI可以解释结果 文本文件的名称作为参数输入批处理文件。 除了当我试图包含一个IF语句时,一切似乎都正常工作,此时它不会返回任何结果

    谁能告诉我我做错了什么在这里,我们试图遵循指导:但显然没有成功

    @ECHO off
    setlocal EnableDelayedExpansion
    for /f "delims=" %%x in (%1) do (
        set "previous=!last!"
        set "last=%%x"
    )
    IF !last! == "EXPORT completed successfully" ECHO 1 ELSE ECHO 0 
    
    如果最后一行改为ECHO!最后!它正确返回成功完成的字符串导出。我试过上面的代码,没有引号,但没有成功

    任何帮助都将不胜感激,因为我以前从未使用过batch


    谢谢

    你离得很近!注意,我在IF和ELSE子句周围添加了括号。我还为你的
    上一篇
    加了引号

    最后,请记住,批处理中IF…ELSE周围的空格实际上很重要-有关详细信息,请参阅

    @ECHO off
    setlocal EnableDelayedExpansion
    for /f "delims=" %%x in (%1) do (
        set "previous=!last!"
        set "last=%%x"
    )
    IF "!last!" == "EXPORT completed successfully" (
        ECHO 1
    ) ELSE (
        ECHO 0 
    )
    
    ECHO !last!
    

    我认为,当您使用
    set
    命令在命令行中设置值时,应该使用
    %
    引用此变量。例如:

    @echo off
    cls
    :loop
    rem DO SOMETHING
    set /p userinp=Repeat (y,n)?
    if "%userinp%" == "y" (goto loop)
    pause
    

    此批处理执行某些操作,然后询问用户是否需要使用
    userinp
    变量重复此过程。希望这有帮助。

    如果需要,请更换
    !最后IF“!last!”
    (请记住,比较
    =
    周围的位部分,包括任何周围的
    ),并将
    ()
    放在
    ECHO 1
    周围(以便命令解释器知道在哪里检查
    else
    关键字),就是这样。。。