2016-04-06 13 views
0

Ich verwende diese answer, um zu versuchen, Dateien an einen neuen Speicherort mit einer CSV-Liste zu kopieren, wobei OldName der aktuelle Dateiname und NewName der neue Name einschließlich Dateipfad ist. Was ist der beste Weg, um das Skript zu zwingen, einen neuen Ordner entsprechend dem neuen Pfad zu erzeugen?Powershell Kopieren von Dateien in neue Verzeichnisse - am besten

Zum Beispiel:

OldName NewName 
A.pdf  C:\NewFolder\Anew.pdf 

Das ist mein Skript

$Copies = Import-Csv '.\copies.csv' -Header "OldName","NewName" 

foreach($File in $Copies) { 
    New-Item -Force $File.NewName -Type File 
    Copy-Item $File.OldName $File.NewName 
} 

Aber diese überschreibt alle Dateien, die im selben Ordner bleiben, bevor sie kopiert werden.

Antwort

1

die Zeile ersetzen, wo Sie das Verzeichnis erstellen:

diese
New-Item -Force $File.NewName -Type File 

mit:

$NewDir = ($File.NewName -as [System.IO.FileInfo]).DirectoryName 
If (-not (Test-Path -Path $NewDir)) { 
    New-Item -ItemType Directory -Path $NewDir -Force | Out-Null 
}