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

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

dokxpi@vk 18-11-2017 13:22 2778393

Условное зеркало изображений с одинаковыми именами - CMD/BAT
 
Доброго времени суток!
Прошу помощи в реализации следующей задачи.

Структура ("Фотки 1" и "Фотки 2" находятся в общий папке "image")

Фотки 1
- папка 1 (изображение)
- папка 2 (изображение)
- папка 3 (изображение)

Фотки 2
- папка 1 (изображение)
- папка 2 (изображение)
- папка 3 (изображение)




В папке "Фотки 1" и "Фотки 2" лежат изображение с одинаковыми именами, отличии только в том что в папке "Фотки 2" находятся изображение с вотермарком (имена индитичны)

Что нужно?

Если удалить вложенное изображение из папки "Фотки 2", то что бы при запуске батника изображение из папки "Фотки 1" так же удалилось. Так же из папкой "Фотки 1" Если удалить вложенное изображение из папки "Фотки 1", то что бы при запуске батника изображение из папки "Фотки 2" так же удалилось


ПС. будет чудестно если не удалять изображение, а переносить их в папку remove в корневых каталогах "Фотки 1" и "Фотки 2"


Заранее благодарен

alpap 18-11-2017 15:42 2778416

да все уже придумали собственно.

megaloman 18-11-2017 20:59 2778483

Вот решение, как поставлена задача: не найденные в другой папке файлы перемещаются в папку Remove
Код:

@Echo Off

Set "Box1=Z:\Box_In\Фотки 1"
Set "Arc1=Z:\Box_In\Фотки 1\Remove"

Set "Box2=Z:\Box_In\Фотки 2"
Set "Arc2=Z:\Box_In\Фотки 2\Remove"

Call :Remove "%Box2%" "%Arc1%" "%Box1%"
Call :Remove "%Box1%" "%Arc2%" "%Box2%"

GoTo :Eof

:Remove
        If Not Exist "%~2" Md "%~2"
        FOR /F "usebackq delims=" %%d IN (`dir "%~3" /b /A:D`) DO (
                If Not "%~nx2"=="%%d" If Exist "%~1\%%d" (
                        FOR /F "usebackq delims=" %%f IN (`dir "%~3\%%d" /b /A:-D 2^>nul`) DO (
                                If Not Exist "%~1\%%d\%%f" Move /Y "%~3\%%d\%%f" "%~2\" >nul
                        )
                )
        )
GoTo :Eof


Здесь файлы перемещаются в папку Remove, но, однако, в этой папке этот файл помещается в подпапку с тем же именем, из которого он был удалён
Код:

@Echo Off

Set "Box1=Z:\Box_In\Фотки 1"
Set "Arc1=Z:\Box_In\Фотки 1\Remove"

Set "Box2=Z:\Box_In\Фотки 2"
Set "Arc2=Z:\Box_In\Фотки 2\Remove"

Call :Remove "%Box2%" "%Arc1%" "%Box1%"
Call :Remove "%Box1%" "%Arc2%" "%Box2%"

GoTo :Eof

:Remove
        If Not Exist "%~2" Md "%~2"
        FOR /F "usebackq delims=" %%d IN (`dir "%~3" /b /A:D 2^>nul`) DO (
                If Not "%~nx2"=="%%d" (
                        FOR /F "usebackq delims=" %%f IN (`dir "%~3\%%d" /b /A:-D 2^>nul`) DO (
                                If Not Exist "%~1\%%d\%%f" (
                                        If Not Exist "%~2\%%d" Md "%~2\%%d"
                                        Move /Y "%~3\%%d\%%f" "%~2\%%d\" >nul
                                )
                        )
                )
        )
GoTo :Eof


dokxpi@vk 20-11-2017 01:05 2778782

Цитата:

Цитата megaloman
Код: »

megaloman, спасибо за то что обратили внимание на пост и попытались помочь, но
к сожалению ваше решение не работает

megaloman 20-11-2017 08:35 2778797

dokxpi@vk, как понять "не работает", что при запуске скрипта происходит? Вы прописали свои реальные пути к папкам? В именах Ваших папок есть русские символы? В таком случае, в какой кодировке сохранили скрипт?
Еще раз проверил - скрипт рабочий. Единственное, забыл предупредить, что если какой-то под "Папки I" в одной папке есть, а в другой не существует, такая подпапка не обрабатывается, так как Вы в вопросе указали одинаковую структуру подпапок.
В предыдущем посте исправил в решении небольшую неточность и добавил еще одно более развитое работающее решение.

dokxpi@vk 23-11-2017 01:31 2779586

megaloman, вы были правы
Спасибо большое


Время: 10:17.

Время: 10:17.
© OSzone.net 2001-