Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Вот решение, как поставлена задача: не найденные в другой папке файлы перемещаются в папку 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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 20-11-2017 в 12:50.

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:59, 18-11-2017 | #3