Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Скрипт который раскидывает файлы по папкам, с частью имени этих файлов

Ответить
Настройки темы
Любой язык - [решено] Скрипт который раскидывает файлы по папкам, с частью имени этих файлов

Новый участник


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

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


Изменения
Автор: username-qq
Дата: 06-10-2018
Описание: Уточнение
Скрипт, который раскинул бы все файлы в папки, названия которых будут равняться слову, до первого упоминания символа _ (либо лучше до первого упоминания года "201*").
Если такая папка имеется, то просто перенести в нее файл, если нет, то создать папку и перенести в нее файл.
Как это реализовать? Предпочтительно на CMD/BAT Или PowerShell
(OC Windows 10)

Для понимания:

cd До
Код: Выделить весь код
S:\Test\До>dir /b /s
S:\Test\До\File5
S:\Test\До\File1_2018-08-02-19-12-21-123_https-site.site-file1_com.jpeg
S:\Test\До\File1_2018-08-03-19-12-21-123_https-site.site-file1_com.jpeg
S:\Test\До\File1_2018-08-04-18-12-21-123_https-site.site-file1_com.jpeg
S:\Test\До\File1_2018-08-04-19-12-21-123_https-site.site-file1_com.jpeg
S:\Test\До\File1_2018-08-05-19-12-21-123_https-site.site-file1_com.jpeg
S:\Test\До\File2_2018-08-04-19-12-21-123_https-site.site-file2_com.jpeg
S:\Test\До\File2_2018-08-06-19-12-21-123_https-site.site-file2_com.jpeg
S:\Test\До\File2_2018-08-07-19-12-21-123_https-site.site-file2_com.jpeg
S:\Test\До\File2_2018-08-08-19-12-21-123_https-site.site-file2_com.jpeg
S:\Test\До\File2_2018-08-09-19-12-21-123_https-site.site-file2_com.jpeg
S:\Test\До\File3_2018-08-02-19-12-21-123_https-site.site-file3_com.jpeg
S:\Test\До\File3_2018-08-08-19-12-21-123_https-site.site-file3_com.jpeg
S:\Test\До\File3_2018-08-10-19-12-21-123_https-site.site-file3_com.jpeg
S:\Test\До\File4_2018-08-03-19-12-21-123_https-site.site-file4_com.jpeg
S:\Test\До\File4_2018-08-04-19-12-21-123_https-site.site-file4_com.jpeg
S:\Test\До\File5_2018-08-04-18-12-21-123_https-site.site-file4_com.jpeg
S:\Test\До\File5_2018-08-04-19-12-21-123_https-site.site-file4_com.jpeg
cd После
Код: Выделить весь код
S:\Test\После>dir /b /s
S:\Test\После\File5
S:\Test\После\File1
S:\Test\После\File2
S:\Test\После\File3
S:\Test\После\File4
S:\Test\После\File5\File5_2018-08-04-18-12-21-123_https-site.site-file4_com.jpeg
S:\Test\После\File5\File5_2018-08-04-19-12-21-123_https-site.site-file4_com.jpeg
S:\Test\После\File1\File1_2018-08-02-19-12-21-123_https-site.site-file1_com.jpeg
S:\Test\После\File1\File1_2018-08-03-19-12-21-123_https-site.site-file1_com.jpeg
S:\Test\После\File1\File1_2018-08-04-18-12-21-123_https-site.site-file1_com.jpeg
S:\Test\После\File1\File1_2018-08-04-19-12-21-123_https-site.site-file1_com.jpeg
S:\Test\После\File1\File1_2018-08-05-19-12-21-123_https-site.site-file1_com.jpeg
S:\Test\После\File2\File2_2018-08-04-19-12-21-123_https-site.site-file2_com.jpeg
S:\Test\После\File2\File2_2018-08-06-19-12-21-123_https-site.site-file2_com.jpeg
S:\Test\После\File2\File2_2018-08-07-19-12-21-123_https-site.site-file2_com.jpeg
S:\Test\После\File2\File2_2018-08-08-19-12-21-123_https-site.site-file2_com.jpeg
S:\Test\После\File2\File2_2018-08-09-19-12-21-123_https-site.site-file2_com.jpeg
S:\Test\После\File3\File3_2018-08-02-19-12-21-123_https-site.site-file3_com.jpeg
S:\Test\После\File3\File3_2018-08-08-19-12-21-123_https-site.site-file3_com.jpeg
S:\Test\После\File3\File3_2018-08-10-19-12-21-123_https-site.site-file3_com.jpeg
S:\Test\После\File4\File4_2018-08-03-19-12-21-123_https-site.site-file4_com.jpeg
S:\Test\После\File4\File4_2018-08-04-19-12-21-123_https-site.site-file4_com.jpeg
Для понимания более подробно:

dir /s До
Код: Выделить весь код
Содержимое папки S:\Test\До

Сб 06.10.2018  13:54    <DIR>          .
Сб 06.10.2018  13:54    <DIR>          ..
Сб 06.10.2018  13:49    <DIR>          File5
Сб 06.10.2018  13:49                 0 File1_2018-08-02-19-12-21-123_https-site.site-file1_com.jpeg
Сб 06.10.2018  13:49                 0 File1_2018-08-03-19-12-21-123_https-site.site-file1_com.jpeg
Сб 06.10.2018  13:51                 0 File1_2018-08-04-18-12-21-123_https-site.site-file1_com.jpeg
Сб 06.10.2018  13:49                 0 File1_2018-08-04-19-12-21-123_https-site.site-file1_com.jpeg
Сб 06.10.2018  13:49                 0 File1_2018-08-05-19-12-21-123_https-site.site-file1_com.jpeg
Сб 06.10.2018  13:52                 0 File2_2018-08-04-19-12-21-123_https-site.site-file2_com.jpeg
Сб 06.10.2018  13:50                 0 File2_2018-08-06-19-12-21-123_https-site.site-file2_com.jpeg
Сб 06.10.2018  13:50                 0 File2_2018-08-07-19-12-21-123_https-site.site-file2_com.jpeg
Сб 06.10.2018  13:50                 0 File2_2018-08-08-19-12-21-123_https-site.site-file2_com.jpeg
Сб 06.10.2018  13:50                 0 File2_2018-08-09-19-12-21-123_https-site.site-file2_com.jpeg
Сб 06.10.2018  13:51                 0 File3_2018-08-02-19-12-21-123_https-site.site-file3_com.jpeg
Сб 06.10.2018  13:51                 0 File3_2018-08-08-19-12-21-123_https-site.site-file3_com.jpeg
Сб 06.10.2018  13:50                 0 File3_2018-08-10-19-12-21-123_https-site.site-file3_com.jpeg
Сб 06.10.2018  13:51                 0 File4_2018-08-03-19-12-21-123_https-site.site-file4_com.jpeg
Сб 06.10.2018  13:51                 0 File4_2018-08-04-19-12-21-123_https-site.site-file4_com.jpeg
Сб 06.10.2018  13:51                 0 File5_2018-08-04-18-12-21-123_https-site.site-file4_com.jpeg
Сб 06.10.2018  13:51                 0 File5_2018-08-04-19-12-21-123_https-site.site-file4_com.jpeg
              17 файлов              0 байт

 Содержимое папки S:\Test\До\File5

Сб 06.10.2018  13:49    <DIR>          .
Сб 06.10.2018  13:49    <DIR>          ..
               0 файлов              0 байт
dir /s После
Код: Выделить весь код
Содержимое папки S:\Test\После

Сб 06.10.2018  13:55    <DIR>          .
Сб 06.10.2018  13:55    <DIR>          ..
Сб 06.10.2018  13:49    <DIR>          File5
Сб 06.10.2018  13:49    <DIR>          File1
Сб 06.10.2018  13:49    <DIR>          File2
Сб 06.10.2018  13:49    <DIR>          File3
Сб 06.10.2018  13:49    <DIR>          File4
               0 файлов              0 байт

 Содержимое папки S:\Test\После\File5

Сб 06.10.2018  13:49    <DIR>          .
Сб 06.10.2018  13:49    <DIR>          ..
Сб 06.10.2018  13:51                 0 File5_2018-08-04-18-12-21-123_https-site.site-file4_com.jpeg
Сб 06.10.2018  13:51                 0 File5_2018-08-04-19-12-21-123_https-site.site-file4_com.jpeg
               2 файлов              0 байт

 Содержимое папки S:\Test\После\File1

Сб 06.10.2018  13:49    <DIR>          .
Сб 06.10.2018  13:49    <DIR>          ..
Сб 06.10.2018  13:49                 0 File1_2018-08-02-19-12-21-123_https-site.site-file1_com.jpeg
Сб 06.10.2018  13:49                 0 File1_2018-08-03-19-12-21-123_https-site.site-file1_com.jpeg
Сб 06.10.2018  13:51                 0 File1_2018-08-04-18-12-21-123_https-site.site-file1_com.jpeg
Сб 06.10.2018  13:49                 0 File1_2018-08-04-19-12-21-123_https-site.site-file1_com.jpeg
Сб 06.10.2018  13:49                 0 File1_2018-08-05-19-12-21-123_https-site.site-file1_com.jpeg
               5 файлов              0 байт

 Содержимое папки S:\Test\После\File2

Сб 06.10.2018  13:49    <DIR>          .
Сб 06.10.2018  13:49    <DIR>          ..
Сб 06.10.2018  13:52                 0 File2_2018-08-04-19-12-21-123_https-site.site-file2_com.jpeg
Сб 06.10.2018  13:50                 0 File2_2018-08-06-19-12-21-123_https-site.site-file2_com.jpeg
Сб 06.10.2018  13:50                 0 File2_2018-08-07-19-12-21-123_https-site.site-file2_com.jpeg
Сб 06.10.2018  13:50                 0 File2_2018-08-08-19-12-21-123_https-site.site-file2_com.jpeg
Сб 06.10.2018  13:50                 0 File2_2018-08-09-19-12-21-123_https-site.site-file2_com.jpeg
               5 файлов              0 байт

 Содержимое папки S:\Test\После\File3

Сб 06.10.2018  13:49    <DIR>          .
Сб 06.10.2018  13:49    <DIR>          ..
Сб 06.10.2018  13:51                 0 File3_2018-08-02-19-12-21-123_https-site.site-file3_com.jpeg
Сб 06.10.2018  13:51                 0 File3_2018-08-08-19-12-21-123_https-site.site-file3_com.jpeg
Сб 06.10.2018  13:50                 0 File3_2018-08-10-19-12-21-123_https-site.site-file3_com.jpeg
               3 файлов              0 байт

 Содержимое папки S:\Test\После\File4

Сб 06.10.2018  13:49    <DIR>          .
Сб 06.10.2018  13:49    <DIR>          ..
Сб 06.10.2018  13:51                 0 File4_2018-08-03-19-12-21-123_https-site.site-file4_com.jpeg
Сб 06.10.2018  13:51                 0 File4_2018-08-04-19-12-21-123_https-site.site-file4_com.jpeg
               2 файлов              0 байт
UDP: Файлы названы по шаблону "ИМЯ_ГОД-МЕСЯЦ-ДЕНЬ-ЧАСЫ-МИНУТЫ-СЕКУНДЫ-ДОЛИСИКУНД_САЙТ_ПРЯМАЯССЫЛКА.jpeg"

То есть ИМЯ бывает каким угодно, не только File№...

Спасибо!

Отправлено: 14:26, 06-10-2018

 

Ветеран


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

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


Цитата username-qq:
Как это реализовать? »
так а с чем у вас затруднения?
FOR /? напомнит, как разбить вывод DIR на части

или воспользуйтесь FORFILES

Отправлено: 14:52, 06-10-2018 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


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

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


Я не умею писать скрипты такой сложности

Отправлено: 15:56, 06-10-2018 | #3


Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo Off                                                                                                  
	Call :@Files "Z:\Test\До" "Z:\Test\После"  "jpeg" "_201"
GoTo :Eof

:@Files
	FOR /F "usebackq delims=" %%f IN (`2^>nul Dir /B /A:-D /S "%~1\*%~4*.%~3"`) DO (
		If Exist "%%f" Call :@Moveing "%%f" %2 %3 %4  
	)
GoTo :Eof

:@Moveing
	Set "Fold=%~n1"
	Call Set "Fold=%%Fold:%~4=:%%"
	FOR /F "delims=:" %%n IN ("%Fold%") DO Set "Fold=%%n"
	If Not Exist "%~2\%Fold%" Md "%~2\%Fold%"
	>nul Move /Y "%~dp1%Fold%%~4*.%~3" "%~2\%Fold%\" 
GoTo :Eof

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


Последний раз редактировалось megaloman, 06-10-2018 в 17:07. Причина: Оптимизация кода. Ускорение процесса

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

Отправлено: 16:48, 06-10-2018 | #4


Новый участник


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

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


Цитата megaloman:
@Echo Off Call :@Files "Z:\Test\До" "Z:\Test\После" "jpeg" "_201" GoTo :Eof :@Files FOR /F "usebackq delims=" %%f IN (`2^>nul Dir /B /A:-D /S "%~1\*%~4*.%~3"`) DO ( If Exist "%%f" Call :@Moveing "%%f" %2 %3 %4 ) GoTo :Eof :@Moveing Set "Fold=%~n1" Call Set "Fold=%%Fold:%~4=:%%" FOR /F "delims=:" %%n IN ("%Fold%") DO Set "Fold=%%n" If Not Exist "%~2\%Fold%" Md "%~2\%Fold%" >nul Move /Y "%~dp1%Fold%%~4*.%~3" "%~2\%Fold%\" GoTo :Eof »
Спасибо за помощь, но у меня почему-то не сработало.

Дополню: Файлы создаются по шаблону "ИМЯ_ГОД-МЕСЯЦ-ДЕНЬ-ЧАСЫ-МИНУТЫ-СЕКУНДЫ-ДОЛИСИКУНД_САЙТ_ПРЯМАЯССЫЛКА.jpeg"

Тоесть ИМЯ может меняться как угодно, не только File№... (добавлю в шапку)

Отправлено: 17:33, 06-10-2018 | #5


Ветеран


Contributor


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

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


username-qq, Вы свои пути к файлам прописали? В этих путях есть русские символы? Если есть - сохраните батник в 866 кодировке. Не сработало - это как? Сообщения об ошибках? Переименуйте Ваш батник, который не сработал, в txt-файл и приложите к сообщению.
Скрипту фиолетово, какое имя стоИт перед заданной подстрокой (здесь, по Вашему пожеланию, _201)
В принципе, при вызове функции :@Files можно прописать иную подстроку для опознавания имени, расширение, пути к папкам.

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


Последний раз редактировалось megaloman, 06-10-2018 в 17:49.

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

Отправлено: 17:42, 06-10-2018 | #6


Новый участник


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

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


Цитата megaloman:
сохраните батник в 866 кодировке »
Помогло сохранение в 866 кодировке.


ОГРОМНОЕ СПАСИБО!

Отправлено: 18:30, 06-10-2018 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Скрипт который раскидывает файлы по папкам, с частью имени этих файлов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Раскидать файлы по папкам согласно дате в имени файла spkvvs Скриптовые языки администрирования Windows 17 24-01-2024 16:03
CMD/BAT - [решено] Перемещение файлов по папкам по имени Мурат09 Скриптовые языки администрирования Windows 14 27-06-2018 09:57
Любой язык - Скрипт для размещения файлов pdf с папки на рабочем столе по папкам на сервере Arman.Bugatayev Скриптовые языки администрирования Windows 3 30-12-2015 12:17
Любой язык - Скрипт для распределения файлов по папкам кучками по n-ому размеру DmitryAnatolich Скриптовые языки администрирования Windows 9 06-05-2013 15:20
CMD/BAT - Не работает скрипт сортировки файлов по папкам dark-------13 Скриптовые языки администрирования Windows 0 27-01-2012 23:11




 
Переход