Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

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

Ветеран


Contributor


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

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


С сохранением структуры папок
Код: Выделить весь код
@Echo Off

Set "BoxIn=Z:\Box_In"

Set "File1=* +.txt"
Set "File2=* + +.txt"
Set "File3=* + + +.txt"

Set "BoxOut1=Z:\Box_Out\+"
Set "BoxOut2=Z:\Box_Out\+ +"
Set "BoxOut3=Z:\Box_Out\+ + +"

FOR /F "usebackq delims=" %%f IN (`Dir "%BoxIn%\%File3%" /B /A-D /S 2^>nul`) DO Call :PlusMove "%%f" "%BoxOut3%"
FOR /F "usebackq delims=" %%f IN (`Dir "%BoxIn%\%File2%" /B /A-D /S 2^>nul`) DO Call :PlusMove "%%f" "%BoxOut2%"
FOR /F "usebackq delims=" %%f IN (`Dir "%BoxIn%\%File1%" /B /A-D /S 2^>nul`) DO Call :PlusMove "%%f" "%BoxOut1%"

GoTo :Eof

:PlusMove
	Set "In=%~dp1"
	Set "Out=%~2"

	Call Set "Out=%%In:%BoxIn%=%Out%%%
	
	If Not Exist "%Out%" Md "%Out%"
	Move %1 "%Out%" >nul 
GoTo :Eof
Без сохранения структуры папок (внимание! при совпадении имён в разных папках останется один файл с этим именем)
Код: Выделить весь код
@Echo Off

Set "BoxIn=Z:\Box_In"

Set "File1=* +.txt"
Set "File2=* + +.txt"
Set "File3=* + + +.txt"

Set "BoxOut1=Z:\Box_Out\+"
Set "BoxOut2=Z:\Box_Out\+ +"
Set "BoxOut3=Z:\Box_Out\+ + +"

FOR /F "usebackq delims=" %%f IN (`Dir "%BoxIn%\%File3%" /B /A-D /S 2^>nul`) DO Call :PlusMove "%%f" "%BoxOut3%"
FOR /F "usebackq delims=" %%f IN (`Dir "%BoxIn%\%File2%" /B /A-D /S 2^>nul`) DO Call :PlusMove "%%f" "%BoxOut2%"
FOR /F "usebackq delims=" %%f IN (`Dir "%BoxIn%\%File1%" /B /A-D /S 2^>nul`) DO Call :PlusMove "%%f" "%BoxOut1%"

GoTo :Eof

:PlusMove
	If Not Exist %2 Md %2
	Move /Y %1 "%~2\" >nul 
GoTo :Eof

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


Последний раз редактировалось megaloman, 03-05-2017 в 23:22.

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

Отправлено: 23:06, 03-05-2017 | #2