2017-05-09 2 views
2

Ce script fonctionne parfaitement dans PowerShell. Il copie tous les fichiers avec un type spécifique. Mais je veux copier les fichiers avec les dossiers & sous-dossiers.Comment copier un dossier avec des sous-dossiers?

$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

S'il vous plaît expliquer plus en détail ce que la fonctionnalité que vous aimeriez avoir. Quelques exemples pratiques seraient un bon début. – vonPryz

+0

salut pour par exemple il y a 1000 fichiers .txt dans les dossiers. ceci copie avec succès cela mais ce n'est pas ce dossier qui contient ces fichiers. –

+0

en bref, il ne copie pas le dossier mais copie le fichier dedans. –

Répondre

14

POWERTIP: Utiliser PowerShell pour copier des éléments et Retain Structure des dossiers

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

Question: Comment puis-je utiliser Windows PowerShell 3.0 pour copier une structure de dossier à partir d'un lecteur à un partage réseau et conserver la structure d'origine?

Réponse: Utilisez la cmdlet Copy-Item et spécifier le paramètre –Container commuté:

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

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

pouvez-vous modifier mon code ajouter s'il vous plaît applaudissements –

+0

$ dest = "C: \ n" Copier-Item -Path $ sourceRoot -Filtre "* .txt" -Recurse -Destination $ destinationRoot -Container $ files = Get- ChildItem -Path "C: \ support admin" -Filter "* .msg" -Recurse foreach ($ file dans les fichiers $) { $ file_path = Rejoignez-Path -Path $ dest -ChildPath $ file.Name $ i = 1 Bien que (test-Path -Path $ file_path) { $ i ++ $ file_path = Rejoignez-Path -Path $ dest -ChildPath « $ (file.BaseName $) _ $ ($ i) $ ($ file.Extensio n) » } Copy-Item -Path $ file.FullName -Destination $ file_path } –

+0

pas il ne fonctionne pas. J'ai ajouté ce compagnon de ligne. –