如何根据文件扩展名复制文件

如何根据文件扩展名复制文件

我有一个大约有 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!

相关内容