Рекурсивно копирует файлы powershell, исключая те, которые существуют в списке
У меня есть файл (например, list.txt) со списком путей файлов, например
F: \ Users \ Пользователь \ Desktop \ f1.doc
F: \ Users \ Пользователь \ Desktop \ f2.doc
F: \ Users \ Пользователь \ Документы \ f3.doc
F: \ Users \ Пользователь \ Документы \f4.doc
Я также прикрепил к своему компьютеру диск F:, на котором есть эти и другие файлы, которые не отображаются в list.txt.
Я хотел бы скопировать все файлы на диске F:, которые не принадлежат списку list.txt, но сохраняют структуру папок без изменений.
что-то вроде "copy-item F:\users\user\desktop\f2a.doc -destination C:\copied\users\user\desktop\f2a.doc", но для всех файлов на диске F:.
Я предполагаю, что мне придется использовать -filter, так как -exclude не работает должным образом, но я не знаю как. Буду признателен за любую оказанную помощь.
Камаль
Вот код, который у меня есть:
$ file = "list.txt"
$ target = "c: \ copied \"$prevDir = "c:\dummy"
$count = 0
foreach ($line in Get-Content $file){
$currDir = (Get-ChildItem $line).Directory
if ($currDir -ne $prevDir) {
$files = Get-ChildItem $currDir -Recurse
foreach ($item in $files) {
if ($item -ne (Get-ChildItem $fullPath).Name) {
Copy-Item $item.FullName -Destination $target + $line
$count++
}
}
}
$prevDir = $currDir
}
</pre>
1 ответ
В итоге я написал небольшую программу на C# для достижения этой цели. Любой, кто интересуется кодом, может найти его здесь: https://github.com/ecofriend/CryptoFileSaver