2015-02-11 3 views
0

Я пытаюсь использовать robocopy для копирования определенных файлов в новое место. Ниже я сравниваю каталог с файлом csv для поиска новых файлов. Я получаю новые файлы в переменную $ files с полным именемRobocopy конкретных файлов из Compare-Object

$files = Compare-Object $csv $location -Property fullname | 
Select-Object FullName | Where-Object {!($_.psiscontainer)} | foreach{$_.FullName} 

Ниже приведен код, который используется для копирования robocopy. Это правильный ситнакс?

robocopy $src $dest $files 

Когда я запускаю это, я получаю недопустимый параметр. Как скопировать новые файлы ($ files) из старого местоположения в новое с помощью robocopy?

Спасибо!

+1

Если вы используете Robocopy, вам даже не нужно сравнивать папки, Robocopy сделает это за вас. Я думаю, вам нужно подтянуть командную строку и сделать «robocopy /?», Чтобы посмотреть на ее параметры. Я предполагаю, что «Robocopy [source] [destination]/s/copyall/log +: Log.txt' будет работать для вас. – TheMadTechnician

ответ

0

Конечно, согласен с @TheMadTechnician на этом. Если бы мне пришлось делать то, что вы пытаетесь сделать, это то, что я придумал, основываясь на некотором вашем коде выше. Одна линия Robocopy превратилась в путаницу.

Get-ChildItem "C:\Temp" -Recurse | Export-CSV "C:\filelisting.csv" -NoTypeInformation 

$csv1 = Import-CSV "C:\Filelisting.csv" 
$folder2 = "C:\TestFolder" 
$dest = "C:\Temp\Test" 

Compare-Object $($csv1 | ? { $_.PSIsContainer -ne $true }) $folder2 -Property FullName | 
Foreach-Object { ROBOCOPY ([System.IO.Path]::GetDirectoryName($_.FullName)) $dest ([System.IO.Path]::GetFileName($_.FullName)) "/copyall /log+:C:\Log.txt" } 
Смежные вопросы