YuS 2
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Код: <# .SYNOPSIS Копирование или псевдоперемещение файлов и каталогов с сохранением структуры .Description Скрипт предназначен для копирования или перемещения файлов из одного каталога в другой, при этом сохраняется вложенная структура каталогов. Фактически, перемещение не выполняется, вместо него работает копирование с последующим удалением скопированнных итемов. .Parameter Source Необязательный: Исходный каталог для выборки элементов. Указывается либо относительный, либо абсолютный путь. .Parameter Destination Необязательный: Целевой каталог. Указывается либо относительный, либо абсолютный путь. .Parameter Include Необязательный: маска(и) для включения элементов в выборку .Parameter Exclude Необязательный: маска(и) для исключения элементов из выборки .Parameter Delete Переключатель: Если указан, то будут удалены исходные файлы, включенные в выборку, рекурсивно .Parameter Emptydelete Переключатель: Если указан, то будут удалены пустые подкаталоги в исходном каталоге, рекурсивно .Example .\script.ps1 -sourc "D:\FOLDER1" -dest "d:\Folder2" -incl '*.pdf','*.txt' -excl '*_out.*' -del Это пример перемещения файлов по маскам '*.pdf','*.txt' с исключением из выборки по маске '*_out.*', с последующим удалением исходных элементов. Пустые каталоги не удаляются. .Example .\script.ps1 Это пример копирования/перемещения файлов/каталогов, с сохранением структуры, но по указанным в самом скрипте параметрам... .Link http://forum.ru-board.com/topic.cgi?forum=62&topic=30859&start=3600#4 .Notes Created By YuS Version: 1.00 Date: 20.01.2021 Purpose/Change: Первая версия #> #requires -v 3.0 param ( [string] $source = ".\Folder1", [string] $destination = ".\Folder2", [string[]] $include = '*.*', [string[]] $exclude = '', [switch] $delete, [switch] $emptydelete ) $src = gi -lit $source -force # копирование файлов с сохранением структуры dir -lit $src.fullname -inc $include -exc $exclude -rec -force|copy -d { $d = split-path $_.fullname.replace("$($src.fullname)",$destination) if (!(test-path -lit $d)){md $d -force} else {$d} } -force #-whatif if ($delete) { # удаляем все скопированные файлы dir -lit $src.fullname -inc $include -exc $exclude -rec -force -file| del -force -rec } if ($emptydelete) { # удаляем пустые каталоги dir -lit $src.fullname -rec -dir -force|sort{$_.fullname.length} -des|%{ if((dir -lit $_.fullname -rec -force) -eq $null){ del -lit $_.fullname -force } } } |
| Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 09:29 20-01-2021 | Исправлено: YuS 2, 13:35 20-01-2021 |
|