bat 如何实现对文件夹进行深层次遍历,并判断文件夹中的子文件夹中是否包含.png文件如果包含则停止这个子文件夹的遍历,然后对这个包含.png文件的子文件进行操作。然后继续遍历其它文件夹或者子文件夹
时间: 2023-08-01 07:09:30 浏览: 79
多级文件夹遍历,准确遍历多级文件夹下的内容
3星 · 编辑精心推荐
可以使用递归的方式实现对文件夹进行深层次遍历,并且在遍历过程中判断子文件夹是否包含.png文件。具体实现如下:
```bat
@echo off
setlocal EnableDelayedExpansion
set "root_dir=C:\test"
call :traverse "%root_dir%"
exit /b
:traverse
set "dir=%~1"
for /f "tokens=*" %%f in ('dir /b /a:d "%dir%"') do (
set "sub_dir=%dir%\%%f"
set "has_png_file=false"
for /r "%sub_dir%" %%g in (*.png) do (
set "has_png_file=true"
goto :break
)
if !has_png_file! (
echo Found .png file in subdirectory: !sub_dir!
rem 对包含.png文件的子文件夹进行操作
) else (
call :traverse "!sub_dir!"
)
)
exit /b
:break
exit /b
```
首先定义了一个变量 `root_dir`,指定要遍历的文件夹的根目录。然后调用 `:traverse` 子程序,传入根目录路径作为参数。`traverse` 子程序会遍历指定文件夹下的所有子文件夹,并且判断每个子文件夹是否包含.png文件。
具体的遍历方式是使用 `for /f` 循环遍历文件夹下的所有子文件夹,并且对每个子文件夹递归调用 `:traverse` 子程序。在遍历子文件夹的过程中,使用 `for /r` 循环判断子文件夹中是否包含.png文件。如果找到了.png文件,则设置一个变量 `has_png_file` 为 true,并且使用 `goto` 跳转到 `:break` 子程序,停止对当前子文件夹的遍历。如果没有找到.png文件,则继续遍历子文件夹。
在 `:break` 子程序中,退出当前子程序并返回到上一级子程序。如果 `has_png_file` 变量为 true,则表示当前子文件夹包含.png文件,可以在这里进行相应的操作。
阅读全文