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

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

Ветеран


Contributor


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

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


lSVl, Решалась частная задача
Цитата Maza11:
скриншоты формата "Snap - 2017-02-06 09.45.00.png" »
Вы пытаетесь частное решение применить к другой задаче
Цитата lSVl:
sshot-20??-??-??-[??-??-??].png»
Для этого надо было вникнуть, как работает скрипт. Частное решение именно Вашей задачи
Код: Выделить весь код
@Echo Off

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

Set "Mask=sshot-20??-??-??-[??-??-??].png"

FOR /F "usebackq delims=" %%f IN (`Dir "%BoxIn%\%Mask%" /b /A:-D 2^>nul`) DO (
	FOR /F "usebackq tokens=2,3,4 delims=-" %%i IN ('%%f') DO (
		If Not Exist "%BoxOut%\%%i-%%j-%%k" Md "%BoxOut%\%%i-%%j-%%k"
		Copy "%BoxIn%\%%f" "%BoxOut%\%%i-%%j-%%k\" >nul &&Del "%BoxIn%\%%f"
	)
)
Загвоздка в том, чтобы выдернуть дату из имени файла - приходится подстраиваться под формат имени.
Вот более общее решение - дата определяется не по имени файла, а по дате его последнего изменения. Но и тут засада, общности тоже нет: предполагается, что формат отображения даты в системе дд.мм.гггг
Код: Выделить весь код
@Echo Off
Set "BoxIn=Z:\Box_In"
Set "BoxOut=Z:\Box_In"

Set "Mask=sshot-20??-??-??-[??-??-??].png"

FOR /F "usebackq delims=" %%f IN (`Dir "%BoxIn%\%Mask%" /b /A:-D /O:D /T:W 2^>nul`) DO Call :Separator "%BoxIn%\%%f" "%BoxOut%"
GoTo :Eof

:Separator
	Set "DName=%~t1"
	Set "DName=%Dname:~6,4%-%Dname:~3,2%-%Dname:~0,2%"
	If Not Exist "%~2\%DName%" Md "%~2\%DName%"
	Copy %1 "%~2\%DName%\" >nul &&Del %1
GoTo :Eof

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


Последний раз редактировалось megaloman, 30-03-2018 в 12:35.

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

Отправлено: 12:07, 30-03-2018 | #14