17

たくさんのファイルを含むフォルダーがあります。一部のファイルのみを別のフォルダーにコピーする必要があります。コピーする必要があるファイルを含むリストがあります。

copy-item を使用しようとしましたが、対象のサブフォルダーが存在しないため、「パスの一部が見つかりませんでした」という例外がスローされます。</p>

これを修正する簡単な方法はありますか?

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

1 に答える 1

20

これを foreach ループとして試してください。ファイルをコピーする前に、ターゲットフォルダーと必要なサブフォルダーを作成します。

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 
}
于 2013-02-05T17:31:20.233 に答える