你好 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/