CMD/BAT - [решено] Условное зеркало изображений с одинаковыми именами - CMD/BAT

Ответить
Аватара пользователя
dokxpi@vk

CMD/BAT - [решено] Условное зеркало изображений с одинаковыми именами - CMD/BAT

Сообщение dokxpi@vk »

Доброго времени суток!

Прошу помощи в реализации следующей задачи.



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



Фотки 1

- папка 1 (изображение)

- папка 2 (изображение)

- папка 3 (изображение)



Фотки 2

- папка 1 (изображение)

- папка 2 (изображение)

- папка 3 (изображение)









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



Что нужно?



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





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





Заранее благодарен
Аватара пользователя
megaloman

Re: CMD/BAT - [решено] Условное зеркало изображений с одинаковыми именами - CMD/BAT

Сообщение megaloman »

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

[spoiler]Код:
[/spoiler]

Код: Выделить всё

@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, но, однако, в этой папке этот файл помещается в подпапку с тем же именем, из которого он был удалён

[spoiler]Код:
[/spoiler]

Код: Выделить всё

@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

Re: CMD/BAT - [решено] Условное зеркало изображений с одинаковыми именами - CMD/BAT

Сообщение dokxpi@vk »

Цитата megaloman:



Код:
CMD/BAT - [решено] Условное зеркало изображений с одинаковыми именами - CMD/BAT




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

к сожалению ваше решение не работает
Аватара пользователя
megaloman

Re: CMD/BAT - [решено] Условное зеркало изображений с одинаковыми именами - CMD/BAT

Сообщение megaloman »

dokxpi@vk, как понять "не работает", что при запуске скрипта происходит? Вы прописали свои реальные пути к папкам? В именах Ваших папок есть русские символы? В таком случае, в какой кодировке сохранили скрипт?

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

В предыдущем посте исправил в решении небольшую неточность и добавил еще одно более развитое работающее решение.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»