file - 批处理文件第三个 "If NOT"语句未到达

标签 file batch-file if-statement

你好 stackoverflow 社区,

我正在编写一个批处理文件来进行一些自动计算机维护,并包含几个防病毒应用程序。出于某种原因,从未达到第三个“如果不是”语句。

:AV
REM MSE
if not '%MSE%'=='' (
Echo Scanning for viruses using Microsoft Security Essentials.
Echo.
%MSE% -Scan -ScanType 1
Echo.
GOTO Defrag
)

REM AVG
if not '%AVG%'=='' (
Echo Scanning for viruses using AVG.
Echo.
%AVG% /COMP /QT /TRASH
Echo.
GOTO Defrag
)

REM NOD32
if not '%NOD32%'==''(
Echo Scanning for viruses using NOD32.
Echo.
if '%NOD32%'=='' GOTO NOD32NotFound
%NOD32% /aind /auto /log-file="%userprofile%\Desktop\Scan_Results.txt"
Echo.
GOTO Defrag
)

REM If all else fails...
GOTO AVNotFound

目前,共有三个代码块,每个防病毒程序一个。仅当变量 %AVG% %MSE% 或 %NOD32% 不为空时才执行每个代码块,这意味着它们指向有效文件。我使用代码分配变量:
if exist "%programfiles(x86)%\AVG\AVG2012\avgscana.exe" set AVG="%programfiles(x86)%\AVG\AVG2012\avgscana.exe"

所有三个代码块都可以完美运行,编码没有任何问题。问题是无论第三个 block 是什么,它都不会执行。因此,在当前示例中,代码块按照 MSE、AVG 和 NOD32 的顺序排列。 NOD32 的代码块没有执行,因为它是第三 block 。相反,如果我将 block 剪切并粘贴到另一个顺序中,而 AVG 的代码块是第三个 block ,它将不会执行。

有任何想法吗?

有什么建议么?

为澄清而编辑。

最佳答案

您在该行中缺少一个空格:

if not '%NOD32%'==''(

尝试:
if not '%NOD32%'=='' (

当我尝试脚本时,这一行导致失败。换线后,效果很好。

关于file - 批处理文件第三个 "If NOT"语句未到达,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8263821/

相关文章:

javascript - 带有 Javascript 的表情符号代理字符串。如何解析?

java - 给出答案后计算器关闭

Windows - 如果发生错误,防止控制台窗口关闭

Python If/Else 只按顺序返回,不按逻辑

php - 以这种方式排序 if 语句的原因是什么?

java - try..catch VS long if()

c# - Linq 根据目录名称 C# 按升序获取文件列表

java - 如何计算 float 文件的标准偏差?

javascript - 使用 JavaScript 读取本地 JSON 文件(无网络服务器)

batch-file - 获取批处理文件的完整路径