我有一个大约有 200 个模块的 Java 项目,如下所示:
C:/ROOT1/module1/p1/p2/C1.java
C:/ROOT1/module1/p1/C2.java
C:/ROOT1/module1/R1.properties
C:/ROOT1/module2/p3/p4/C3.java
C:/ROOT1/module3/p4/p5/p6/C4.java
C:/ROOT1/module3/p4/p5/R2.txt
现在我想编写一个 Windows 批处理脚本,这样我就可以将这些文件复制到另一个位置,但 Maven 友好,所以所有 Java 文件都在 中,/src/main/java
所有非 Java 文件都在 中/src/main/resources
。因此所需的文件结构将类似于
C:/ROOT2/module1/src/main/java/p1/p2/C1.java
C:/ROOT2/module1/src/main/java/p1/C2.java
C:/ROOT2/module1/src/main/resources/R1.properties
C:/ROOT2/module2/src/main/java/p3/p4/C3.java
C:/ROOT2/module3/src/main/java/p4/p5/p6/C4.java
C:/ROOT2/module3/src/main/resources/p4/p5/R2.txt
我怎样才能为 Windows 编写这样的批处理文件来执行此操作?
顺便说一下,许多目标文件夹尚未创建,我需要的脚本应该在 ROOT2 下创建适当的文件夹。
答案1
找到答案并执行以下操作:
@echo off
set sourceDir=C:\ROOT1
set destDir=c:\ROOT2
for /D %%i in (%destDir%\*) do (
rd /s /q "%%i"
)
for /D %%i in (%sourceDir%\*) do (
robocopy %%i %destDir%\%%~ni%%~xi\src\main\java\ *.java /S /NFL /NDL /NJH /NJS /nc /ns /np > nul
robocopy %%i %destDir%\%%~ni%%~xi\src\main\resources\ *.* /XF *.java /S /NFL /NDL /NJH /NJS /nc /ns /np > nul
)
echo FINISHED!