2013-12-11 75 views
0

我想獲得的文件列表中的一個特定的變更,然後從TFS和地點的,是不是我的本地工作空間中的一些任意文件夾中提取它們。複製文件從2010年TFS到任意文件夾

到目前爲止,我能夠解析出從互聯網上找到的代碼集合中更改的文件。現在,我想要做的就是複製這些文件並放入「C:\ mypath \ tostuff \ toworkon」。

這裏是我如何獲得這些文件:

param(
    [Parameter(Mandatory=$True)] 
    [string] $changesets = $(throw 'Usage: Get-Changeset-Files ''changesets'''), 
    [Parameter(Mandatory=$False)] 
    [string] $path, 
    [Parameter(Mandatory=$False)] 
    [string] $VOSversion, 
    [Parameter(Mandatory=$False)] 
    [string] $environment 
) 

process 
{ 
    # get TFS object 
    $tfs = get-tfs; 

    # build up list of file items  
    $fileItems = @(); 

    $changesets.Split(',') | foreach { 
     $tfs.vcs.GetChangeset($_).Changes | foreach { 
      if($path.length -gt 0) { 
       if($_.Item.ServerItem.Contains($path)) { 
        if($fileItems -notcontains $_.Item.ServerItem) { 
         $fileItems += $_.Item.ServerItem; 
        } 
       } 
      } else { 
       if($fileItems -notcontains $_.Item.ServerItem) { 
        $fileItems += $_.Item.ServerItem; 
       } 
      } 
     } 
    } 

    $downloadFolder = 'C:\mypath\tostuff\toworkon' 
    foreach ($element in $fileItems) { 
    $fileItem = $tfs.vcs.GetItem($element); 
    $contents = ([io.streamreader]$fileItem.DownloadFile()).ReadToEnd(); 
    $contents.CopyTo(); 
    } 

    return $fileItems | Sort-Object; 

} 

我的問題是$contents.CopyTo()部分。我知道這是不正確的。這是我堅持的部分。我的目標是在$contents文件被複制到一個位置的任何路徑 - 我不需要保留文件夾路徑。

回答

0

多一點挖掘,並意識到你不能真正做到$var1 + "\" + $var2,並讓它像我以爲我來到這個解決方案:

if(Test-Path -Path $downloadFolder){ 
    if (!($downloadFolder.EndsWith("\"))) { 
     $targetFolder = $downloadFolder + "\"; 
    } else { 
     $targetFolder = $downloadFolder; 
    } 

    #echo $targetFolder; 
    foreach ($element in $fileItems) { 
     $fileItem = $tfs.vcs.GetItem($element); 
     $elementSplit = $element.Split('/'); 
     $fileName = $elementSplit[$elementSplit.length - 1]; 
     echo $fileName; 
     $contents = ([io.streamreader]$fileItem.DownloadFile()).ReadToEnd(); 
     #echo $targetFolder$fileName; 
     $contents | Out-File $targetFolder$fileName -Force; 
    } 
} 

最重要的部分是:

$contents | Out-File $targetFolder$fileName -Force; 

我學習每天都有新事物。

相關問題