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

Posted

技术标签:

【中文标题】Powershell:搜索子目录并将文件复制到该目录【英文标题】:Powershell : Search the Subdirectory and copy the file to that directory 【发布时间】:2022-01-02 14:01:18 【问题描述】:

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

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

我希望在我运行我的 powershell 脚本后将我的 version.properties 文件复制到“resources”、“webapp”和“application”目录。

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

$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"
    

【问题讨论】:

那么到目前为止你有什么?只是运行gci 查找该文件并在此之后执行三个复制命令的情况吗? 是的,绝对正确。我有一个 gci,然后我运行一个 for 循环来查找这些文件夹,如果我找到那个文件夹,我会尝试将该文件复制到我想要的文件夹中。 那么问题出在哪里?你的代码是什么样的?由于您确实已经定义了文件夹,因此您想将其复制到仅使用搜索根目录的相对部分或从根目录构建绝对路径应该可以吗? 我的代码看起来如何。我已经在问题中添加了它。 您的 $Jar$Ear$War 行看起来有问题。那些看起来你打算定义一个 $Var ...但你没有任何任务。 【参考方案1】:

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

#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”在这里是一个静态关键字,但如果不是,则可能需要调整该脚本以反映这一点。

【讨论】:

这有帮助。谢谢

以上是关于Powershell:搜索子目录并将文件复制到该目录的主要内容,如果未能解决你的问题,请参考以下文章

使用powershell通过配置文件config调用wcf(含用户名密码认证)

PowerShell复制目录以及目录下文件

PowerShell复制目录以及目录下文件

如何查看 hdfs 目录并将到达 hdfs 的最新文件复制到本地?

powershell 将文件从列表复制到另一个目录

用于搜索目录并将文件移动到新目录、删除任何副本的 Bash 脚本