2013-02-05 202 views
6

存在包含大量文件的文件夾。只有部分文件需要被複制到不同的文件夾。有一個列表包含需要複製的文件。將文件列表複製到目錄

我試圖用複製項目,但因爲目標子文件夾不存在異常被拋出「找不到路徑的一部分」

是否有一個簡單的方法來解決這一問題?

$targetFolderName = "C:\temp\source" 
$sourceFolderName = "C:\temp\target" 

$imagesList = (
"C:\temp\source/en/headers/test1.png", 
"C:\temp\source/fr/headers/test2png" 
) 


foreach ($itemToCopy in $imagesList) 
{ 
    $targetPathAndFile = $itemToCopy.Replace($sourceFolderName , $targetFolderName) 
    Copy-Item -Path $itemToCopy -Destination $targetPathAndFile 
} 

回答

10

試試這個作爲你的foreach循環。它創建targetfolder和複製文件之前,必要的子文件夾。

foreach ($itemToCopy in $imagesList) 
{ 
    $targetPathAndFile = $itemToCopy.Replace($sourceFolderName , $targetFolderName) 
    $targetfolder = Split-Path $targetPathAndFile -Parent 

    #If destination folder doesn't exist 
    if (!(Test-Path $targetfolder -PathType Container)) { 
     #Create destination folder 
     New-Item -Path $targetfolder -ItemType Directory -Force 
    } 

    Copy-Item -Path $itemToCopy -Destination $targetPathAndFile 
} 
+0

好看。有一個簡單的方法來翻轉這個在做完全相反的?也就是說,在'$ imagesList'中複製** NOT **的所有文件? – user3026965

相關問題