Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Построчное копирование папок, с сохранением структуры или копирования из файла - Powe (http://forum.oszone.net/showthread.php?t=335749)

morgan-12l1 16-07-2018 21:22 2822080

Построчное копирование папок, с сохранением структуры или копирования из файла - Powe
 
Добрый вечер.

1 вопрос:
Подскажите пожалуйста, как можно произвести копирование каталогов с определенным вложением (содержимым определенным, например JPG). Если в папке есть данный формат, то скопировать данные файлы из этой папки в папку которую назначу, с сохранением структуры. расширений может быть несколько.

2 вопрос:
Например, я получил список всех подпапок, например:
D:\test\1
D:\test\2
D:\test\4\1\
D:\test\4\2\2\1
B этих папках есть файлы уже. данный файл сохранен в txt ну или можно csv
И нужно данные каталоги скопировать в назначенную папку, например сказано скопировать в папку:
D:\Foto\
И получится:
D:\Foto\test\1
D:\Foto\test\2
D:\Foto\test\4\1\
D:\Foto\test\4\2\2\1
Или указать чтобы было на 1 каталог ниже:
D:\Foto\1
D:\Foto\2
D:\Foto\4\1\
D:\Foto\4\2\2\1

Пробовал и циклом, то вроде бы копирует только файлы раз, а потом ошибка что он уже существует, и нет такой же структуры.

Kazun 17-07-2018 10:01 2822155

robocopy

::
:: Copy options :
::
/S :: copy Subdirectories, but not empty ones.
/E :: copy subdirectories, including Empty ones.
/LEV:n :: only copy the top n LEVels of the source directory tree.

Код:

PS > robocopy D:\test D:\Foto /S /E /LEV:2
PS > tree D:\Foto
D:\FOTO
├───1
├───2
└───4

PS > robocopy D:\test D:\Foto /S /E /LEV:3
D:\FOTO
├───1
├───2
└───4
    ├───1
    └───2


YuS_2 17-07-2018 18:53 2822229

Цитата:

Цитата morgan-12l1
1 вопрос: »

как сказали выше, это вполне можно осуществить с помощью robocopy, но если требуется именно на powershell, то:
Цитата:

Цитата morgan-12l1
B этих папках есть файлы уже. данный файл сохранен в txt ну или можно csv
И нужно данные каталоги скопировать в назначенную папку, например сказано скопировать в папку:
D:\Foto\»

Код:

function copy-rec ($a,$b){
        begin{$splt = $a.split('\')[-1]}
        process{
                $fdst = $b+$(-join ($arr = $_.directoryname -split "($splt)")[2..$arr.length])
                if(!(test-path $fdst)){md "$fdst"|out-null}
                copy $_.fullname $fdst -force
        }
}
# исходный и целевой каталоги, фильтры
$src_c = 'D:\test'
$dst_c = 'D:\Foto'
$flt = '*.txt','*.csv'

# копируем с сохранением структуры непустых каталогов
dir "$src_c\*" -rec -force -inc $flt|?{!$_.psiscontainer}|copy-rec $src_c $dst_c



Время: 23:09.

Время: 23:09.
© OSzone.net 2001-