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

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

Ветеран


Contributor


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

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


У alpap подсмотрел вариант, что возможно в папке Backup есть несколько подпапок, не обязательно только 2, указанные в вопросе, в которых имеются бэкапы, имена которых соответствуют приведенным в вопросе правилам. Тогда вот еще вариант:
Код: Выделить весь код
@Echo Off

Set "BoxIn=Z:\Box_In\Backup"
Set "BoxOut=Z:\Box_Arc"

FOR /F "usebackq delims=" %%i IN (`dir "%BoxIn%" /b /A:D 2^>nul`) DO Call :Folders "%BoxIn%" "%%i" "%BoxOut%"

GoTo :Eof

:Folders
	Call :CopyFile "%~1\%~2\%~2_backup_20*.bak" "%~3\Months" 01
	Call :CopyFile "%~1\%~2\%~2_backup_20*.bak" "%~3\Decades" 10
	Call :CopyFile "%~1\%~2\%~2_backup_20*.bak" "%~3\Decades" 20
	Call  :DelFile "%~1\%~2\%~2_backup_20*.bak" 10
GoTo :Eof

:CopyFile
	FOR %%f IN ("%~1") DO (
		FOR /F "tokens=5 delims=_" %%d IN ("%%~nxf") DO (
			If %3==%%d If Not Exist "%2\%%~nxf" Copy "%%f" "%2\" >nul
		)
	)
GoTo :Eof

:DelFile
	FOR /F "usebackq skip=%2 delims=" %%f IN (`dir "%~1" /b /A:-D /O:-N 2^>nul`) DO Del "%~dp1%%f"
GoTo :Eof
Кроме того, и в этом варианте, и в исправленном предыдущем учтено, что если бэкап уже скопирован, повторно он копироваться не будет.

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


Последний раз редактировалось megaloman, 17-11-2017 в 03:42.

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

Отправлено: 03:23, 17-11-2017 | #4