2017-05-09 4 views
2

Dieses Skript funktioniert perfekt in PowerShell. Es kopiert alle Dateien mit einem bestimmten Typ. Aber ich möchte Dateien mit ihm Ordner & Unterordner kopieren.Wie kopiert man Ordner mit Unterordnern?

$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

Bitte erläutern weitere Einzelheiten in welche Funktionen, die Sie haben möchten. Einige praktische Beispiele wären ein guter Anfang. – vonPryz

+0

hi für zB es gibt 1000. Txt dateien in ordnern. Das kopiert das erfolgreich, aber es enthält nicht den Ordner, der diese Dateien enthält. –

+0

kurz gesagt, es kopiert nicht den Ordner, sondern kopiert die Datei darin. –

Antwort

14

Powertipp: Verwenden Sie Powershell-Elemente kopieren und Ordnerstruktur beibehalten

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

Frage: Wie kann ich Windows Powershell 3.0 eine Ordnerstruktur von einem Laufwerk kopieren zu einer Netzwerkfreigabe und behält die ursprüngliche Struktur?

Antwort: Verwenden Sie das Copy-Item Cmdlets und geben Sie die –Container Parameter eingeschaltet:

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

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

können Sie meinen Code hinzufügen hinzufügen in es bitte Prost –

+0

$ dest = "C: \ n" Kopieren-Item -Path $ sourceRoot -Filter "*. Txt" -Recurse -Destination $ destinationRoot -Container $ files = Get- ChildItem -Path "C: \ Admin Support" -Filter "* .msg" -Recurse foreach ($ $ files Datei in) { $ 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.Extensio n)“ } Copy-Item -Path $ file.FullName -Destination $ file_path } –

+0

nein, es funktioniert. Ich habe diesen Linienkollegen hinzugefügt. –

Verwandte Themen