2017-05-09 93 views
2

此腳本在PowerShell中完美工作。它複製具有特定類型的所有文件。但我想複製文件與它的文件夾&子文件夾。如何複製文件夾與子文件夾?

$dest = "C:\example" 
$files = Get-ChildItem -Path "C:\example" -Filter "*.msg" -Recurse 

foreach ($file in $files) { 
    $file_path = Join-Path -Path $dest -ChildPath $file.Name 

    $i = 1 

    while (Test-Path -Path $file_path) { 
     $i++ 
     $file_path = Join-Path -Path $dest -ChildPath 
     "$($file.BaseName)_$($i)$($file.Extension)" 
    } 

    Copy-Item -Path $file.FullName -Destination $file_path 
} 
+0

請解釋更多的細節,你想什麼功能都有。一些實際的例子將是一個好的開始。 – vonPryz

+0

嗨,例如,文件夾中有1000個.txt文件。這會成功複製該文件,但不包含包含該文件的文件夾。 –

+0

簡而言之,它不復制文件夾,而是複製文件。 –

回答

14

PowerTip:使用PowerShell來複制項目和保留文件夾結構

來源:https://blogs.technet.microsoft.com/heyscriptingguy/2013/07/04/powertip-use-powershell-to-copy-items-and-retain-folder-structure/

問:我如何使用Windows PowerShell 3.0的文件夾結構從一個驅動器複製到網絡共享,並保留原有結構?

答:使用Copy-Item cmdlet,並指定–Container切換參數:

$sourceRoot = "C:\temp" 
$destinationRoot = "C:\n" 

Copy-Item -Path $sourceRoot -Filter "*.txt" -Recurse -Destination $destinationRoot -Container 
+0

你可以編輯我的代碼添加它請歡呼 –

+0

$ dest =「C:\ n」 Copy-Item -Path $ sourceRoot -Filter「* .txt」-Recurse -Destination $ destinationRoot -Container $ files = Get- ChildItem -Path 「C:\管理支持」 篩選器 「*。味精」 -Recurse 的ForEach($文件$文件){ $ FILE_PATH =聯接路徑-Path $ DEST -ChildPath $ file.Name $ I = 1 雖然(測試的路徑-Path $ FILE_PATH){ $ I ++ $ FILE_PATH =聯接路徑-Path $ DEST -ChildPath「$($ file.BaseName)_ $($ I) $($ file.Extensio N)」 } 拷貝項目-Path $ file.FullName -Destination $ FILE_PATH } –

+0

沒有它的工作。我已添加該隊友。 –

相關問題