批处理脚本查找.exe文件时如何同时排除多个指定子目录
批处理多排除目录搜索EXE调整方案
方法1:直接链式条件判断(适合固定2~3个排除目录场景)
批处理不支持逗号分隔多个排除条件,你可以通过叠加if not判断实现多目录排除,调整后代码如下:
@echo off :: 提前获取计算机名存入变量,避免重定向时语法错误 set pcname=%computername% :: 依次判断排除D:\1、D:\2、D:\3三个目录,可根据需求增删if判断行 for /d %%a in (D:\*) do ( if /i not "%%a"=="D:\1" if /i not "%%a"=="D:\2" if /i not "%%a"=="D:\3" ( where /r %%~sa\ *.exe >> d:\%pcname%.txt ) )
注意:你原代码中d:\%pcname.txt存在语法错误,变量名和后缀之间少了.,已修正为d:\%pcname%.txt
方法2:排除列表写法(适合后续可能新增排除目录的场景)
如果后续需要调整排除目录,直接修改排除列表即可,不用改判断逻辑,代码如下:
@echo off setlocal enabledelayedexpansion set pcname=%computername% :: 在这里定义需要排除的目录,空格分隔,加多少个都可以 set "exclude_list=D:\1 D:\2 D:\3" for /d %%a in (D:\*) do ( set "skip=0" :: 匹配是否属于排除目录 for %%d in (%exclude_list%) do ( if /i "%%a"=="%%d" set "skip=1" ) if !skip! equ 0 ( where /r %%~sa\ *.exe >> d:\%pcname%.txt ) )
内容的提问来源于stack exchange,提问作者Denis Volkov
相关产品推荐
相关产品推荐

