2013-02-28 55 views
1

我正在嘗試編寫一個腳本,用於跟蹤何時複製到目錄「A」,然後將其複製到我們擁有的用於將文件移動到專用網絡的文件夾。我會打電話給那個目錄'b'。另一方面,我有一個腳本,它將'b'中的這些文件複製到一個文件夾中,該文件夾鏡像公共網絡上的另一個文件夾'c'。我只想將那些最近被複制到文件夾'a'的文件。問題是在跟蹤複製日期的文件中沒有屬性。所以我想我會用一個文本文件來跟蹤它。我在下面寫了這個腳本,但它不起作用。我認爲它是因爲當我從文本文件中提取信息時,它不再是一個對象?無論如何,任何幫助,你可以給予非常感謝。跟蹤複製到目錄中的文件

$binaries = "\\network\home\binaries" 
$owt = "\\server1\owt\binaries" 

function Get-Directories ($path) 
{ 
    $PathLength = $path.length 
     Get-ChildItem $path -Recurse | % { 
     Add-Member -InputObject $_ -MemberType NoteProperty -Name RelativePath -Value $_.FullName.substring($PathLength+1) 
    $_ 
} 
} 
$A= [IO.File]::ReadAllText("\\network\home\binaries\log\log.txt") 
$B= Get-Directories $binaries 

#$stream = [System.IO.StreamWriter] "\\network\home\binaries\log\log.txt" | % {$stream.WriteLine($b)} 
#$stream.close() 
Compare-Object $A $B -Property RelativePath, Name, Length | 
Sort RelativePath, Name, Length -desc | % { 
if ($file -ne $_.RelativePath) { $_ } } | 
Where-Object {$_.SideIndicator -eq "=>"} | 
ForEach-Object { 
    $file = $_.RelativePath 
    Echo F | xcopy "$binaries\$file" "$owt\$file" /S 
} 
$c= Get-Directories $binaries | % { $c >> "\\network\home\binaries\log\log.txt"} 

回答

1

安排運行robocopy的shell腳本可能更容易。 Robocopy具有各種方便的功能(鏡像,帶寬限制,錯誤重啓等),看起來更適合您的場景。

比爾