2014-02-06 166 views
2

我需要將包含子文件夾和文件的文件夾複製到另一臺機器上的共享文件夾。在此期間,腳本應在每個目標文件夾中創建一個自定義子文件夾並將文件放置在那裏。Robocopy:複製保留文件夾結構但添加子文件夾的文件

我希望這個例子clatifies任務:

  1. 對於下面的源文件夾:

    --Logs 
    ----Application 
    ------Service 
    --------Log1.txt 
    --------Log2.txt 
    ------WebSite 
    --------Log1.txt 
    --------Log2.txt 
    
  2. 目標文件夾應按以下方式創建:

    --Logs 
    ----Application 
    ------Service 
    --------Machine1 
    ----------Log1.txt 
    ----------Log2.txt 
    ------WebSite 
    --------Machine1 
    ----------Log1.txt 
    ----------Log2.txt 
    

正如您在底層看到的子文件夾Machine1已創建。 你能提供一個PowerShell腳本的例子嗎?

我調查了ROBOCOPY命令中的輸入參數。看起來它不允許那麼簡單。

此外,我知道我可以symply遍歷所有文件夾結構,創建所需的子文件夾並將文件複製到每個子文件夾。但是這似乎太「長」了。所以我想知道我是否缺少任何東西。也許有更好的方法來做到這一點。

+0

您運行的是什麼版本的PowerShell? – mjolinor

+0

@ mjolinor版本2.0 – Egor4eg

回答

3

我建議使用robocopy用於複製的子文件夾中的內容:

$srcBase = 'C:\some\Logs\Application' 
$dstBase = 'D:\other\Logs\Application' 

Get-ChildItem $srcBase | ? { $_.PSIsContainer } | % { 
    $dst = "$dstBase\$($_.Name)\Machine1" 

    & robocopy $_.FullName $dst /e 
} 
+1

這一個不會在目標中創建相同的文件夾結構。實際上,它直接在根文件夾內創建所有子文件夾。但是我需要一個完全像源代碼的樹(參見我的問題中的示例) – Egor4eg

+0

@ Egor4eg當我測試它時它工作得很好。請注意,您需要在'$ dstBase'中包含常用父文件夾('Logs \ Application')。如果它仍然不適用於您,請使用您當前使用的代碼更新您的問題。 –

+0

是的,你說得對。它將對我的例子起作用。我忘了提及幾個'應用程序'文件夾是可能的。對於那個很抱歉。無論如何,我已經寫了腳本,你的評論很有幫助。標記爲答案... – Egor4eg

相關問題