PowerShell: копирование / перемещение файлов на основе значения регулярного выражения, с сохранением структуры папок и т. Д.

Вот сценарий: у нас есть рабочий веб-сервер, на котором есть несколько тысяч файлов и папок, к которым прикреплен «_DATE». Мы хотим переместить их во временную папку (убедитесь, что они не используются), а позже удалите файлы.

Я могу использовать:

Get-ChildItem -Path W:\IIS -Recurse | Where-Object{$_.Name -match "_\d{8,10}$"}

Чтобы получить список всех файлов / папок и их расположение. Но ручное удаление их всех кажется трудоемким, особенно если это понадобится в будущем. Я нашел несколько примеров, которые почти делают то, что я хочу:

cls

$source = "W:\IIS"
$destination = "C:\Temp\DevTest" 

foreach ($i in Get-ChildItem -Path $source -Recurse)
{
    if ($i.Name -match "_\d{8,10}$")
    {
        Copy-Item -Path $i.FullName -Destination $item.FullName.ToString().Replace($source,$destination).Trim($item.Name)
    }
}

И:

cls

$source = "W:\IIS"
$destination = "C:\Temp\DevTest" 

$bin = Get-ChildItem -Path $source -Recurse | Where-Object{$_.Name -match "_\d{8,10}$"}

foreach ($item in $bin) {
    Copy-Item -Path $item.FullName -Container -Destination $item.FullName.ToString().Replace($source,$destination).Trim($item.Name) -Recurse
}

Проблема с этими двумя заключаются в том, что, когда я тестирую их с помощью простого копирования элемента, я получаю плоский каталог, и мне нужно сохранить структуру каталогов, чтобы, если движение пойдет не так, я мог вернуться (желательно, перетащив все папки обратно в IIS папка) или я получаю копию множества дополнительных папок / файлов, которые не появляются, когда я запускаю первую команду.

Изменение моей первой команды на:

Get-ChildItem -Path W:\IIS -Recurse | Where-Object{$_.Name -match "_\d{8,10}$"} | Copy-Item -Container -Destination C:\Temp\DevTest -Recurse

Будет копировать все Мне нужно, но с плоским деревом каталогов, а не с сохранением древовидной структуры (но с заменой исходного каталога на место назначения).

Есть предложения / комментарии?

6
задан 666jfox777 25 October 2011 в 18:18
поделиться