首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >批处理文件第三个"If NOT“语句未到达

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

Stack Overflow用户
提问于 2011-11-25 08:42:28
回答 3查看 45.9K关注 0票数 5

你好,堆栈溢出社区,

我正在写一个批处理文件来做一些自动计算机维护,并包含了几个防病毒应用程序。由于某些原因,第三个"if not“语句永远不会出现。

代码语言:javascript
复制
: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%不为空时,才会执行每个代码块,这意味着它们指向一个有效的文件。我使用以下代码为变量赋值:

代码语言:javascript
复制
if exist "%programfiles(x86)%\AVG\AVG2012\avgscana.exe" set AVG="%programfiles(x86)%\AVG\AVG2012\avgscana.exe"

所有三个代码块都工作得很好,代码没有任何错误。问题是,无论第三个块是什么,它都不会执行。因此,在当前示例中,代码块的顺序为MSE、AVG和NOD32。NOD32的代码块不会执行,因为它是第三个代码块。相反,如果我将这些块剪切并粘贴到另一个顺序,其中AVG的代码块是第三个块,它将不会执行。

有什么想法吗?

有什么建议吗?

为澄清而编辑。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-25 11:12:50

您在行中遗漏了一个空格:

代码语言:javascript
复制
if not '%NOD32%'==''(

尝试:

代码语言:javascript
复制
if not '%NOD32%'=='' (

当我尝试这个脚本时,这一行导致了一个失败。在改变线路后,它起作用了。

票数 5
EN

Stack Overflow用户

发布于 2011-11-25 08:54:07

变量是%MSE%%AVG%还是%NOD32%批处理文件?如果是,则需要使用"call“来调用它们(例如call %AVG%)

如果从另一个批处理文件调用,第一个批处理文件将在执行第二个批处理文件后退出,除非使用" call“调用。

票数 2
EN

Stack Overflow用户

发布于 2011-11-25 08:54:26

您的%AVG%%NOD32%%MSE%变量中是否有括号?它们可能在C:\Program Files (x86)\路径中吗?支架将过早关闭分支。

在命令的可执行部分加上引号,例如:

代码语言:javascript
复制
"%MSE%" -Scan -ScanType 1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8263821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档