|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Создание папок по расширению файлов |
|
CMD/BAT - Создание папок по расширению файлов
|
Новый участник Сообщения: 9 |
Здрасте!
Проблемма такая. имеется папка с ОГРОМНЫМ кол-вом файлов разного расширения (семенные фото, видео, документы... всего 65 Гигов) необходим универсальный BAT/CMD файл для того чтоб в корневом каталоге провести сортировку ВСЕХ файлов, и расфасовать их по расширению и дате создания НАПРИМЕР: ...Корневая папка/%DATE%/расширение1/*.расширение1 ...Корневая папка/%DATE%/расширение2/*.расширение2 ...Корневая папка/%DATE%/расширение3/*.расширение3 Зарание благодарю.... ПС, Поиск результата не дал... |
|
Отправлено: 11:44, 15-02-2012 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать jokerbleck,
@Echo Off rem Даты в системе должны быть формата dd.mm.yyyy, иначе решение надо дорабатывать под конкретный случай Set In=E:\Delete\Огромное количество Set Out=E:\Delete\Корневая папка SetLocal EnableExtensions SetLocal EnableDelayedExpansion FOR %%k IN ("%In%\*.*") DO ( Set tFile=%%~tk Set tFile=!tFile:~6,4!_!tFile:~3,2!_!tFile:~0,2! Set xFile=%%~xk Set xFile=!xFile:~1,255! If Not Exist "%Out%\!tFile!\!xFile!" Md "%Out%\!tFile!\!xFile!" Move /Y "%%k" "%Out%\!tFile!\!xFile!\" ) |
------- Отправлено: 12:46, 15-02-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Спасибо... однако под корневой папкой я понимал папку в коророй лежит батник, а не корень диска.
Цитата megaloman:
@Echo Off SetLocal EnableExtensions SetLocal EnableDelayedExpansion FOR %%k IN ("%In%\*.*") DO ( Set tFile=%%~tk Set tFile=!tFile:~6,4!_!tFile:~3,2!_!tFile:~0,2! Set xFile=%%~xk Set xFile=!xFile:~1,255! If Not Exist "%cd%\%Out%\!tFile!\!xFile!" Md "%cd%\%Out%\!tFile!\!xFile!" Move /Y "%%k" "%cd%\%Out%\!tFile!\!xFile!\" ) |
|
Отправлено: 03:56, 16-02-2012 | #3 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Хм... не получается...
проблемма в создании папок. |
Отправлено: 05:45, 16-02-2012 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата jokerbleck:
|
||
Отправлено: 09:17, 16-02-2012 | #5 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать Цитата jokerbleck:
Вариант №2: @Echo Off SetLocal Set Source=C:\Source For /F "Tokens=*" %%A In ('Dir /B /S /AD "%Source%" 2^>nul') Do For /F "Tokens=1,3*" %%B In ('Dir /A-D /TC /-C "%%A\*.*" 2^>nul^|Find "."^|Find ":"^|Find /v "\"') Do Call :_Proc "%%A\%%D" "%%B" For /F "Tokens=1,3*" %%A In ('Dir /A-D /TC /-C "%Source%\*.*" 2^>nul^|Find "."^|Find ":"^|Find /v "\"') Do Call :_Proc "%Source%\%%C" "%%A" GoTo :EoF Set Ext=noext%~x1 Set Output=%Source%\%~2\%Ext:*noext.=% If Not Exist "%Output%" MD "%Output%" 2>nul If /i Not "%~1"=="%Output%\%~nx1" If Exist "%Output%\%~nx1" ( For /F "Tokens=1* Delims=:" %%A In ('Dir /B /A-D "%Output%\%~n1(*)%~x1" "%Output%\%~nx1" 2^>nul^|FindStr /in .') Do If Not Exist "%Output%\%~n1(%%A)%~x1" (Echo:Move "%~1" to "%Output%\%~n1(%%A)%~x1"&Move "%~1" "%Output%\%~n1(%%A)%~x1" >nul) ) Else ( Echo:Move "%~1" to "%Output%\%~nx1"&Move "%~1" "%Output%\%~nx1" >nul ) P.P.S. После сортировки останутся пустые исходные папки, которые можно удалить. |
|
Отправлено: 12:44, 16-02-2012 | #6 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Цитата:
![]() Если батник, огромное число файлов, папки, в которые расфасовываются файлы, находятся вместе, то вот решение (в нём батник не попытается сам себя отсортировать - он останется на месте) @Echo Off rem Даты в системе должны быть формата dd.mm.yyyy, иначе решение надо дорабатывать под конкретный случай SetLocal EnableExtensions SetLocal EnableDelayedExpansion Set Bat=%0 FOR %%k IN (*.*) DO ( If Not "%%k"=="%Bat%" ( Set tFile=%%~tk Set tFile=!tFile:~6,4!_!tFile:~3,2!_!tFile:~0,2! Set xFile=%%~xk Set xFile=!xFile:~1,255! If Not Exist "!tFile!\!xFile!" Md "!tFile!\!xFile!" Move /Y "%%k" "!tFile!\!xFile!\" ) ) |
|
------- Последний раз редактировалось megaloman, 16-02-2012 в 15:31. Отправлено: 13:06, 16-02-2012 | #7 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать БОЛЬШОЕ Спасибо!
Порывшись на форуме своял несколько CMD/BATников. Вот собственно что получилось: 1-й, проверяем на наличие ВСКЛ знака в папке если есть меняем на свободное ************** :1 ren *!*.* %random%.* goto :1 *************** 2-й, изменяем имена всех файлов на "image.*" (фильтр и имя потчеркнул) ************************ @echo off setlocal enableextensions enabledelayedexpansion set /a lCount = 0 for /f "delims=*" %%i in ('dir /b /s "*.*"') do ( set /a lCount += 1 ren "%%i" "image!lCount!%%~xi" ) endlocal exit /b 0 ************************ 3-й, копируем в отдельную папку (имена присвоены, совпадений не будет) ************************* md %cd%\filtr cls Set From=%CD% Set To=%cd%\filtr FOR /R %From% %%f IN (*.*) DO Move /Y "%%f" "%To%\" pause *************************** 4-й, поправленный от megaloman (изменил порядок создания папок) *************************** @Echo Off rem Даты в системе должны быть формата dd.mm.yyyy, иначе решение надо дорабатывать под конкретный случай Set Out=%~dp0 Set Out=%Out:~0,-1% SetLocal EnableExtensions SetLocal EnableDelayedExpansion Set Bat=%0 FOR %%k IN (*.*) DO ( If Not "%%k"=="%Bat%" ( Set tFile=%%~tk Set tFile=!tFile:~6,4!_!tFile:~3,2!_!tFile:~0,2! Set xFile=%%~xk Set xFile=!xFile:~1,255! If Not Exist "!xFile!\!tFile!" Md "!xFile!\!tFile!" Move /Y "%%k" "!xFile!\!tFile!\" ) ) *********************************** Вот я имею несколько батников, теперь появился интерес в обьединении их в один. однако некоторые ватники "зациклины" я не вижу решения... помогите мне /Плиззззззззззз |
Отправлено: 05:40, 20-02-2012 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать jokerbleck, прочтите, пожалуйста, справку по тэгам BBCode и используйте их. В данном случае — тэг «code» для оформления кода в предыдущем посте.
|
Отправлено: 07:16, 20-02-2012 | #9 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Создание папок по дате получения файлов и перемещение в них файлов | KamikadZZe | Скриптовые языки администрирования Windows | 1 | 01-09-2011 14:15 | |
Запрет записи файлов на сетевые ресурсы по расширению | Arkan190 | Microsoft Windows NT/2000/2003 | 6 | 20-06-2011 10:58 | |
VBS/WSH/JS - Отбор файлов по расширению, последующее их удаление. | SaintVictor | Скриптовые языки администрирования Windows | 3 | 22-05-2010 13:21 | |
Доступ - Простой запрет копирования файлов по расширению | Dimly | Microsoft Windows 2000/XP | 2 | 17-08-2009 09:09 | |
Разное - Всегда скрывать определенный тип файлов по расширению | garkin123 | Microsoft Windows Vista | 3 | 23-05-2009 01:49 |
|