Войти

Показать полную графическую версию : [решено] Условное зеркало изображений с одинаковыми именами - CMD/BAT


dokxpi@vk
18-11-2017, 13:22
Доброго времени суток!
Прошу помощи в реализации следующей задачи.

Структура ("Фотки 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
да все (https://www.microsoft.com/en-us/download/details.aspx?id=15155) уже придумали собственно.

megaloman
18-11-2017, 20:59
@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

@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
Код: »
megaloman, спасибо за то что обратили внимание на пост и попытались помочь, но
к сожалению ваше решение не работает

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

dokxpi@vk
23-11-2017, 01:31
megaloman, вы были правы
Спасибо большое




© OSzone.net 2001-2012