![]() |
Копирование из сети в локальную папку с сохранением структуры каталогов
Здравствуйте.
Помогите пожалуйста доработать скрипт (или создать новый) Код:
|
Copy-Item сам по себе рекурсивно копирует с учётом -exclude или -include.
Код:
Copy-Item -Path $Source\* -Destination $Dest -Recurse -Include $getFiles |
Цитата:
В случае копирования каталога целиком, это работает, а вот в случае выборочного копирования, увы и ах, сохранения структуры не получится... Цитата:
Код:
<# Конкретно для Вашего случая (скрипта), строка запуска будет такой: Код:
.\script.ps1 -sourc $Source -dest $Dest -incl $getFiles.name |
Sham, не получилось. Запустил скрипт. Powershell никакой ошибки не выдал, но ничего и не скопировал, хотя измененные файлы со вчерашнего дня были.
YuS_2, может быть не совсем корректно изложил цель задачи... Попробую подробно, пошагово описать, то чего я хотел добиться и что получилось У меня есть каталог Код:
\\USER-PC\c$\users\User\Desktop Вот пример подкаталогов Код:
\\USER-PC\c$\users\User\Desktop\Word Получить список файлов, измененных вчера, и скопировать их в одну кучу в каталог назначения у меня получилось, то есть в корень этого каталога Код:
H:\USERPROFILE-BACKUP\Increment\$newfoldername Код:
\\USER-PC\c$\users\User\Desktop\Word\Реестр1.rtf Код:
H:\USERPROFILE-BACKUP\Increment\$newfoldername\Desktop\Word\Реестр1.rtf Цитата:
Цитата:
[code] |
$Data=Get-Date -Format "dd.MM.yyyy"
$CurrentDay=get-date -format "%d" $Source="" $Dest="" YuS_2, попробовал понять и отредактировать Ваш скрипт, но у меня не получилось. Запускать планирую через планировщик. Помогите с написанием строки запуска и поправкой в самом скрипте Код:
param ( |
Цитата:
Ну или оформить всё в функцию и вызывать её прямо в Вашем же скрипте... Код:
function copy-str { |
Можно подменой папки в пути источника на папку назначения и созданием несуществующих папок через new-item. Не идеально, но рекурсивные папки создаёт и копирует.
Код:
$getFiles | foreach { |
Почитайте про robocopy, очень полезная вещь.
|
Цитата:
Sham, Спасибо. Цитата:
Sham, позвольте пожалуйста Вас немного помучить. Sham, объясните пожалуйста Цитата:
Цитата:
|
Цитата:
например вот так: Код:
Get-Item ./ | Get-Member Код:
$new_variable | Get-Member |
$getFiles содержит массив объектов FileInfo, которые наследует от FileSystemInfo с этим свойством Fullname, которое отдаёт полный путь к файлу в виде строки. Строка тоже объект с кучей методов. Remove отдаёт строку без префикса в виде папки источника, чтобы слева к нему приклеить папку назначения. TrimEnd удаляет возможный конечный слеш папки источника, при наличии которого обрежется слеш в начале (обрезаем по длине пути папки источника).
$new_path.Remove($new_path.LastIndexOf('\')) это [IO.Path]::GetDirectoryName($new_path). Обрезаем всё от последнего слеша до конца. Получаем путь новой папки, чтобы проверить её наличие и создать в случае чего. |
Sham, спасибо, буду все равно, пока практически ничего не понятно :) Буду смотреть ссылки, читать справочную информацию
|
Время: 18:05. |
Время: 18:05.
© OSzone.net 2001-