首页 > 解决方案 > Powershell - 从列表中搜索文件并复制到新目录

问题描述

我有一个脚本用于通过目录和子目录搜索文件。它工作得很好。

我需要修改它,将任何文件从它所在的目录复制到另一个目录。

我的脚本(如下)的问题是所有内容都保存在数组中,我无法弄清楚如何修改它以按照我需要的方式运行。

有人可以看看这个并指出我正确的方向吗?

谢谢,-罗恩

#List containing file names must be wilcarded FILE.*
#Parent folder (Where to begin search)
 $folder = 'C:\Workspace\discovery-jumpstart\src'
#Missing Artifacts Folder (Where Text file resides)
 $Dir2 = 'C:\Workspace\discovery-jumpstart'
#Text File Name
 $files=Get-Content $Dir2\MISSING_BMS.txt
   
 cd \
 cd $folder
    
 Write-Host "Starting Folder: $folder"
 $folderFiles = (Get-ChildItem -Recurse $folder -File).Name
   foreach ($f in $files) {
     if ($folderFiles -contains $f) { 
        Write-Host "File $f was found." -foregroundcolor green
      } 
     else { 
        Write-Host "File $f was not found!" -foregroundcolor red 
      }
}

好的。我在网上搜索时找到了一个脚本。我稍作改动并运行它。它完美无缺。唯一的问题......我完全不明白。这里的一位大师会打破这一点并解释为什么会这样吗?

谢谢,

-罗恩

#Dir to search
$source = 'C:\Temp'
#Text file with search for members
$file_source ="C:\Results_Found_Files_Scan.txt'
#where to copy the matched files
$target = 'C:\Clients' 
get-content $file_source | 
ForEach-Object { get-childitem -Path $source -Recurse -Filter "$_" } | 
Copy-Item -Destination $target

标签: arrayspowershellcopy

解决方案


下面的部分需要修改为之后Write-Host "File $f was found." -foregroundcolor green才能使用该Copy-Item命令。

if ($folderFiles -like $f) { 
        Write-Host "File $f was found." -foregroundcolor green
        Copy-Item (Copy-Item command and the parameters, you would like to use.)
      } 

推荐阅读