Рекурсивно копирует файлы 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

Другие вопросы по тегам