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

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

Ветеран


Contributor


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

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


xan08, Если в имени Ваших файлов маска именно такая, как Вы указали, то есть:
D_Имядня_номернедели_траляляляля, то решение многократно проще:
Код: Выделить весь код
@Echo Off
cls
        Set "BoxIn=Z:\Box_In"
        Set "BoxOut=D:\backup"

	FOR /F "usebackq tokens=1,2,3* delims=_" %%i IN (`2^>nul Dir "%BoxIn%\D_*_*_*20*.*" /B /A:-D`) DO (
		If Exist "%BoxIn%\%%i_%%j_%%k_*20*.*" (
			If Not Exist "%BoxOut%\Неделя %%k\%%i_%%j" Md "%BoxOut%\Неделя %%k\%%i_%%j"
			>nul 2>&1 Move /Y "%BoxIn%\%%i_%%j_%%k_*20*.*" "%BoxOut%\Неделя %%k\%%i_%%j"
		)
	)
Pause
GoTo :Eof
С точки зрения алфавитной сортировки при просмотре папок, ИМХО, имена папок с днём недели выгодно дублировать номером дня в неделе, например: D:\backup\Неделя 23\D3_среда, D:\backup\Неделя 23\D7_воскресенье
Код: Выделить весь код
@Echo Off
cls
        Set "BoxIn=Z:\Box_In"
        Set "BoxOut=D:\backup"

	Set /A Понедельник=1, Вторник=2, Среда=3, Четверг=4, Пятница=5, Суббота=6, Воскресенье=7

	FOR /F "usebackq tokens=1,2,3* delims=_" %%i IN (`2^>nul Dir "%BoxIn%\D_*_*_*20*.*" /B /A:-D`) DO (
		If Exist "%BoxIn%\%%i_%%j_%%k_*20*.*" (
			Call 2>nul Md "%BoxOut%\Неделя %%k\%%i%%%%j%%_%%j"
			Call >nul 2>&1 Move /Y "%BoxIn%\%%i_%%j_%%k_*20*.*" "%BoxOut%\Неделя %%k\%%i%%%%j%%_%%j\"
		)
	)
Pause
GoTo :Eof
Забыл напомнить: батники сохранять в 866 кодировке

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


Последний раз редактировалось megaloman, 04-07-2019 в 11:21.

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

Отправлено: 08:28, 04-07-2019 | #5