Лучший отвечающий
Копирование директории с исключением некоторых папок внутри PowerShell

Вопрос
-
Добрый день.
Есть задача копировать директорию со всем содержимым исключая некоторые папки. Стандартным Copy-Item с параметром -Recurse и -Exclude это сделать не выходит. Я придумал альтернативный вариант, но неужели нет стандартных средств для решения такой простой задачи?
17 мая 2013 г. 11:32
Ответы
-
Стуктура:
PS > Show-Tree fo -ShowLeaf C:\Users\Александр\fo |--1 | \--x.txt |--2 | \--z.txt \--3 |--a | \--c.txt \--y.txt
Файл с исключением:
PS > gc 1.txt \a\
Команда:
PS > xcopy fo D:\fo\ /s /e "/exclude:1.txt" fo\1\x.txt fo\2\z.txt fo\3\y.txt 3 File(s) copied
Результат:
PS > Show-Tree D:\fo -ShowLeaf D:\fo |--1 | \--x.txt |--2 | \--z.txt \--3 \--y.txt
Так же и для robocopy:
robocopy fo D:\fo /s /e /xd a PS > Show-Tree D:\fo -ShowLeaf D:\fo |--1 | \--x.txt |--2 | \--z.txt \--3 \--y.txt
- Изменено KazunEditor 17 мая 2013 г. 16:44
- Помечено в качестве ответа SteFFun 20 мая 2013 г. 9:21
17 мая 2013 г. 16:42Отвечающий
Все ответы
-
как вы знаете, какие папки не копировать? от именя, дате, каким критериям?17 мая 2013 г. 12:15
-
По любым, неважно, к примеру пусть будет по имени. Алгоритм по сути один и тот же будет для любых критериев.17 мая 2013 г. 12:26
-
В PowerShell требуется использовать дополнительные командлеты. Поэтому можно воспользоваться xcopy с параметром exclude.
17 мая 2013 г. 12:37Отвечающий -
как насчет
gci c:\ -Recurse | ?{$_.fullname -notmatch 'name'}| % {Copy-Item $_.fullname "C:\Destination\"}
17 мая 2013 г. 12:39 -
Нет, не сохраняется структура папок, он все подряд кидает в одну папку. Это я уже проходил=)17 мая 2013 г. 12:42
-
Можете привести пример, у меня не получается что то через xcopy.17 мая 2013 г. 12:54
-
попробуйте использовать Xcopy или Robocopy, спасет вас от головной боли17 мая 2013 г. 13:02
-
xcopy "c:\dir1" "d:\dir2\" /s /e /EXCLUDE:C:\file.txt
file.txt содержит -\папка1\
\папка2\
17 мая 2013 г. 13:08Отвечающий -
Господа, можете привести пример использования данных утилит, я уже по разному пробовал, какая то ахинея выходит, все что угодно только, только не то, что нужно.17 мая 2013 г. 13:38
-
Стуктура:
PS > Show-Tree fo -ShowLeaf C:\Users\Александр\fo |--1 | \--x.txt |--2 | \--z.txt \--3 |--a | \--c.txt \--y.txt
Файл с исключением:
PS > gc 1.txt \a\
Команда:
PS > xcopy fo D:\fo\ /s /e "/exclude:1.txt" fo\1\x.txt fo\2\z.txt fo\3\y.txt 3 File(s) copied
Результат:
PS > Show-Tree D:\fo -ShowLeaf D:\fo |--1 | \--x.txt |--2 | \--z.txt \--3 \--y.txt
Так же и для robocopy:
robocopy fo D:\fo /s /e /xd a PS > Show-Tree D:\fo -ShowLeaf D:\fo |--1 | \--x.txt |--2 | \--z.txt \--3 \--y.txt
- Изменено KazunEditor 17 мая 2013 г. 16:44
- Помечено в качестве ответа SteFFun 20 мая 2013 г. 9:21
17 мая 2013 г. 16:42Отвечающий -
Спасибо, работает. Только не понял, в случае использования robocopy, параметр /s(Копировать вложенные папки, кроме пустых) и параметр /e(Копировать вложенные папки, включая пустые) получаются взаимоисключающими, или я что то не так понял? Не понимаю смысла их одновременного использования.20 мая 2013 г. 6:13
-
Смысла действительно нет ,но ключ /e имеет больший вес, поэтому исключения не произойдет.
20 мая 2013 г. 8:46Отвечающий -
Ясно, спасибо.20 мая 2013 г. 9:21