Powershell:搜索子目录并将文件复制到该目录

Powershell : Search the Subdirectory and copy the file to that directory

过去 2 周我一直在研究 Powershell 脚本,但我在这方面没有取得太大进展。

所以我试图将一个名为 version.properties 的文件从我的 gradle 项目的根目录复制到子目录,如“src/main/resources”、“src/main/webapp”和“src/main/application”。 如果我硬编码它的工作路径,但我试图通过查找目录并将我的文件复制到该目录来使其通用。

我希望在 运行 我的 powershell 脚本之后将我的 version.properties 文件复制到“资源”、“webapp”和“应用程序”目录。

我该怎么做?任何建议表示赞赏。

$SourceDirectory = "Projectroot\version.properties"
$folders = gci $SourceDirectory -Recurse -Directory
$jar = "src/main/resources"
$ear = "src/main/application"
$war = "src/main/webapp"
    
foreach ($folder in Sfolders) {
    if (Test-Path $folder/$jar) {
        write-host "copying to $folder/$jar"
        Copy-Item-Path "{$SourceDirectory}\version.properties" -Destination $folder/$jar -Recurse -Force
    }
    
    elseif (Test-Path $folder/$ear) {
        write-host "copying to $folder/$ear"
        Copy-Item-Path "{$SourceDirectory}\version.properties" -Destination $folder/$ear -Recurse -Force
    }
    
    elseif (Test-Path $folder/$war) {
        write-host "copying to $folder/$war"
        Copy-Item-Path "{$SourceDirectory}\version.properties" -Destination $folder/$war -Recurse -Force
    }
    
    else {
        Write-Host "No such path"
    }
}

假设这是一个项目的路径结构:

#ProjectRoot
#ProjectRoot\version.properties <--- File
#ProjectRoot\src
#ProjectRoot\src\main  
#ProjectRoot\src\main\application
#ProjectRoot\src\main\resources
#ProjectRoot\src\main\webapp

下面的脚本可以满足您的需求。


$SourceDirectory = "C:\temp\Projectroot"
$DestinationDirectories = 'resources','application','webapp'

foreach ($I in $DestinationDirectories) {
    $CurrentDest = "$SourceDirectory\src\main$I"
    if (Test-Path -Path $CurrentDest) {
        Copy-Item -Path "$SourceDirectory\version.properties" -Destination $CurrentDest
    } else {
        Write-Warning "Path not found: $CurrentDest"
    }
}

如果我没有得到路径结构,请说明是哪一个。 我也假设“main”在这里是一个静态关键字,但如果不是,则可能需要调整该脚本以反映这一点。