2013-02-05 25 views
6

Çok sayıda dosya içeren bir klasör var. Sadece bazı dosyaların farklı bir klasöre kopyalanması gerekiyor. Kopyalanması gereken dosyaları içeren bir liste var. Dizinin bir dosya listesini kopyalama

Ben kopyalamaya karşı öğeyi kullanmaya çalıştı, ancak hedef alt klasör bir istisna atılan olmadığından? Bunu düzeltmek için kolay bir yol var mı

"yolunun bir bölümü bulamadık”

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

cevap

10

sizin foreach-döngü gibi bu deneyin. Bu TargetFolder vE dosyayı kopyalamadan önce gerekli alt klasör oluşturur.

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

güzel. tam tersi üzerinden bu çevirip yapmak için kolay bir yol var? yani'$ imagesList' içinde ** NOT ** olan tüm dosyaları kopyalayın. – user3026965

İlgili konular