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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Копирование\перемещение с сохранением структуры папок (http://forum.oszone.net/showthread.php?t=338298)

xan08 18-12-2018 13:58 2846788

Копирование\перемещение с сохранением структуры папок
 
Добрый день. Подскажите как реализовать следующий механизм. Есть база изображений со структурой \\сервер1\год\фио\месяц\день\папка_фото\фото.jpg .... например надо скопировать\переместить на \\сервер2\архив\год\фио\месяц\день\папка_фото\фото98.jpg Хотелось бы чтобы при копировании фото98.jpg в каталоге назначения \\сервер2\архив автоматически создавался путь "\год\фио\месяц\день\папка_фото\"

Elven 18-12-2018 14:13 2846791

Код:

robocopy /?

megaloman 18-12-2018 16:17 2846828

Цитата:

Цитата xan08
Есть база изображений со структурой \\сервер1\год\фио\месяц\день\папка_фото\фото.jpg »

Как имя расшаренного ресурса? \\сервер1\год (то есть, имеем много расшаренных папок для каждого года, например:
\\сервер1\2015 \\сервер1\2016 \\сервер1\2017 \\сервер1\2018
Или расшаренная папка одна, и там много папок с годами, то есть:
\\сервер1\расшаренная_папка\годы

xan08 19-12-2018 02:52 2846932

Цитата:

Цитата megaloman (Сообщение 2846828)
Цитата:

Цитата xan08
Есть база изображений со структурой \\сервер1\год\фио\месяц\день\папка_фото\фото.jpg »

Как имя расшаренного ресурса? \\сервер1\год (то есть, имеем много расшаренных папок для каждого года, например:
\\сервер1\2015 \\сервер1\2016 \\сервер1\2017 \\сервер1\2018
Или расшаренная папка одна, и там много папок с годами, то есть:
\\сервер1\расшаренная_папка\годы

Расшаренная папка одна
сервер 1 \\klon\FOTO
сервер 2 \\hurma\archive


Цитата:

Цитата Elven
robocopy /? »


robocopy \\klon\FOTO\2015\Морозов\июнь\03 \\hurma\archive 39.jpg /MOV

Что нужно дописать чтобы в папке archive при копировании определенного файла создавался подкаталог FOTO\2015\Морозов\июнь\03? Не вижу таких ключей в robocopy /?

Нашел скрипт на powershell который делает так, но файлов порядка 10 тысяч и все с разными путями + маской *.jpg задать нельзя, т.к. требуется переместить определенные. Изначально планировалось копипастом закинуть все пути в BAT и выполнить с помощью robocopy
Powershell
$src = 'C:\Temp'
$dst = 'D:\Foto'

foreach ($file in Get-ChildItem $src -File -Include *.jpg,*.txt -Recurse)
{
$folder = "$dst$(Split-Path $file.DirectoryName -NoQualifier)"

if (-not (Test-Path $folder)) {New-Item $folder -Force -ItemType Directory}
Copy-Item $file $folder -Force
}

megaloman 19-12-2018 12:26 2846990

xan08, robocopy "\\Сервер1\Шара1\" "\\Сервер2\Шара2\" *.jpg /s /mov

xan08 19-12-2018 14:14 2847018

Цитата:

Цитата megaloman
xan08, robocopy "\\Сервер1\Шара1\" "\\Сервер2\Шара2\" *.jpg /s /mov »

Если из папки в папку, то проблемы нет...а вот на примере такой конструкции robocopy "\\klon\FOTO\2015\Морозов\июнь\03" "\\hurma\archive" 39.jpg /MOV можно ли сделать, чтобы в папке назначения автоматически создавалась структура FOTO\2015\Морозов\июнь\03.

megaloman 19-12-2018 18:52 2847089

xan08,
Код:

@Echo Off
cls
        Set "Shr1=\\Сервер1\Шара1"
        Set "Shr2=\\Сервер2\Шара2"
        Set "Mask=*.jpg"

        FOR /F "tokens=2 delims=\" %%i IN ("%Shr1%") DO Set "ShrDir=%%i"
        RoboCopy "%Shr1%" "%Shr2%\%ShrDir%" "%Mask%" /S /Mov

        Del /S /A "%Shr1%\desktop.ini" >NUL
        For /F "usebackq delims=" %%i In (`Dir "%Shr1%\" /B /S /A:D 2^>nul^|Sort /R`) Do 2>nul RD "%%i"

Pause

Имеем "\\Сервер1\Шара1\" "\\Сервер2\Шара2\"
Переместим "\\Сервер1\Шара1\" --> "\\Сервер2\Шара2\Шара1\"
В красных строках удаляются файлы "\\Сервер1\Шара1\desktop.ini" и затем все пустые папки в "\\Сервер1\Шара1\", если они есть. Решайте сами, оно Вам нужно ?
Если надо конкретный файл, то, например, указать Set "Mask=39.jpg"


Время: 11:36.

Время: 11:36.
© OSzone.net 2001-