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

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

Ветеран


Contributor


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

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


Вот батник, сохраните его в файл с расширением .bat. Можно в той же папке, где и файлы, но лучше в другой.
Код: Выделить весь код
@Echo Off

Set "Where=Z:\Old"
Set "Mask=*.*"
Set "Out=Z:\Old"

Set "Dir=Dir /A:-D /O:D /T:C"

Pushd "%Where%"

SetLocal EnableExtensions EnableDelayedExpansion

Set "DOld="
FOR /F "usebackq tokens=1,3,*" %%i IN (`%Dir% "%Where%\%Mask%" 2^>nul`) DO (
	Set "DNew=%%i"
	Set "DNew=!DNew:~2,1!!DNew:~5,1!"
	If  "!DNew!"==".." If /I Not "%%k"=="%0" (
		Set "DNew=%%i"
		If /I Not "!DOld!"=="%%i" (
			Set "NDir=%Out%\!DNew:~6,4!\!DNew:~3,2!\!DNew:~0,2!\"
			MD "!NDir!"
			Set "DOld=%%i"
		)
		move "%%k" "!NDir!" >nul
	)
)
popd
Пропишите свою исходую папку и папку, где будут создаваться подпапки по датам. Они могут совпадать. У меня Z:\Old
Подразумевается, что в системе дата отображается в формате дд.мм.гггг
Если надо иметь папки в формате YYYY_MM_DD, то вместо имеющейся строки примените:
Set "NDir=%Out%\!DNew:~6,4!_!DNew:~3,2!_!DNew:~0,2!\"

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


Последний раз редактировалось megaloman, 02-10-2016 в 23:09.

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

Отправлено: 22:55, 02-10-2016 | #5