如何在Windows批处理FOR /d /r循环中排除指定匹配的文件夹?
如何在Windows批处理FOR循环中排除特定文件夹
当然可以实现!你只需要在原循环的执行块里添加一个条件判断,精准过滤掉名称为foobar的文件夹就行,其余包含foo的文件夹不受影响。
直接看修改后的完整命令:
FOR /d /r "topDir" %%G in (*foo*) DO ( IF /I NOT "%%~nG"=="foobar" ( echo %%G ) )
下面拆解一下关键部分:
- 原命令的
FOR /d /r "topDir" %%G in (*foo*):负责递归遍历topDir下所有名称包含foo的文件夹,/d指定遍历文件夹而非文件,/r开启递归搜索。 - 新增的
IF /I NOT "%%~nG"=="foobar":%%~nG是批处理的变量扩展语法,用来提取当前文件夹的纯名称(不带完整路径)/I参数让判断不区分大小写(如果需要严格区分大小写,去掉这个参数即可)NOT表示当文件夹名称不等于foobar时,才执行后续的echo %%G输出操作
这样一来,所有名字里带foo但不是正好叫foobar的文件夹都会被正常输出,完美满足你的需求。
内容的提问来源于stack exchange,提问作者zhzoo
相关产品推荐
相关产品推荐

