Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Скрипт который раскидывает файлы по папкам, с частью имени этих файлов (http://forum.oszone.net/showthread.php?t=337048)

username-qq 06-10-2018 14:26 2834699

Скрипт который раскидывает файлы по папкам, с частью имени этих файлов
 
Скрипт, который раскинул бы все файлы в папки, названия которых будут равняться слову, до первого упоминания символа _ (либо лучше до первого упоминания года "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№...

Спасибо!

Busla 06-10-2018 14:52 2834704

Цитата:

Цитата username-qq
Как это реализовать? »

так а с чем у вас затруднения?
FOR /? напомнит, как разбить вывод DIR на части

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

username-qq 06-10-2018 15:56 2834710

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

megaloman 06-10-2018 16:48 2834719

Код:

@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


username-qq 06-10-2018 17:33 2834731

Цитата:

Цитата 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№... (добавлю в шапку)

megaloman 06-10-2018 17:42 2834735

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

username-qq 06-10-2018 18:30 2834739

Цитата:

Цитата megaloman
сохраните батник в 866 кодировке »

Помогло сохранение в 866 кодировке.


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


Время: 06:40.

Время: 06:40.
© OSzone.net 2001-