bat 在目录下递归循环执行命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
@echo off

rem 想用bat 做一个递归清理文件
rem 目前就是递归执行一下 maven的清理命令
rem 语法真的是渣

rem echo 当前盘符:%~d0
rem echo 当前盘符和路径:%~dp0
rem echo 当前批处理全路径:%~f0
rem echo 当前盘符和路径的短文件名格式:%~sdp0
rem echo 当前CMD默认目录:%cd%

echo ************************************
echo ************ 清理数据 **************
echo ************************************

IF "%1"=="" (
echo 清理目录:%cd%
set prodir=%cd%
) ELSE (
echo 当前参数参数是:[%1]
echo 清理目录:%1
set prodir=%1
if exist %1/ (
cd %1
) else (
echo 目录:[%1]不存在,即将退出!
pause
exit
)
)


rem echo 路径:
rem chdir


for /D %%s in (*) do (

echo 当前循环的值是:%%s


REM 跳过git目录

IF %%s==.git (
echo 这是一个git目录,跳过

) ELSE (
echo 进入目录:%%s
cd %%s
REM echo 判断pom文件是否存在
REM dir

IF EXIST pom.xml (
echo 存在pom文件,开始执行清理命令...

mvn clean

@echo off

) ELSE (
echo 不存在pom文件,进入下一层目录
REM goto BB
REM call %~f0 %cd%
call %~f0

echo 子目录处理完成

)

echo 退出目录:%%s

cd ..
)

echo 本次循环结束,循环值是:%%s
echo ============================================================

)

echo 执行完成