Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/141: Рейтинг темы: голосов - 141, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 04.06.2019
Сообщений: 5

Раскидать файлы по папкам, соответствующим именам файлов

13.08.2019, 11:55. Показов 29658. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача: есть папка в которой свалены документы с почты. Постоянно подступают новые файлы и хочется как то это все автоматизировать.
нужно написать бат.файлик, чтоб все эти файлы копировались в новые папки имена которых должны быть с именем файла и сортировать их по папкам по имени файла , их объединяет только одно цифры в имени файла в названии к примеру Дог.1-192-19 Горналь.doc, Сп 1-192-19 Горналь.doc, Доп.1-192-19 Горналь.doc и т.д.
хотелось бы их распределить в одну папку с именем 1-192-19
Помогите, пожалуйста, реализовать эту задачу правильно.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.08.2019, 11:55
Ответы с готовыми решениями:

Раскидать файлы по папкам, соответствующим датам создания этих файлов
Задача: есть папка (с неизвесной глубиной вложенных папок) в которой свалены фотки (ну очень много фоток ))) нужно написать бат.файлик,...

Раскидать файлы по папкам CMD/BAT
Здравствуйте, Уважаемые. Помогите новичку. Есть два каталога D:\KAT1\FOTO и D:\KAT2\IN В каталог D:\KAT2\IN периодически...

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

9
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
13.08.2019, 16:32
Лучший ответ Сообщение было отмечено mettall61 как решение

Решение

код в кодировке OEM 866, обычным блокнотом в эту кодировку не сохранить
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@echo off
set "d=C:\Papka"
set "out=C:\OUT"
set "ext=doc"
 
for /f "delims=" %%a in ('dir /a-d/b "%d%"^|findstr /rc:"[^0-9][^0-9]*[0-9][0-9]*-[0-9][0-9]*-[0-9][0-9]*[^0-9][^0-9]*\.%ext%"') do set "name=%%a"& call :prs "%%a"
pause& exit
 
:prs
 set "name=%name: =" "%"
 set "name=%name:.=" "%"
 for /f tokens^=3^ delims^=^" %%a in ("%name%") do (
  if not exist "%out%\%%a" md "%out%\%%a"
  >nul copy "%d%\%~1" "%out%\%%a"
 )
exit /b
2
0 / 0 / 0
Регистрация: 04.06.2019
Сообщений: 5
13.08.2019, 21:21  [ТС]
alpap, огромное спасибо, все отработало и раскидало по папкам.

Добавлено через 49 минут
alpap, почему то файлы с именами "3-124-19 Зус7К с.Киргишаны.doc", "Д.с.1 дог.1-210-19 Сызрань.doc" не обрабатывает, я так понял из-за точек и цифр в имени?
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
14.08.2019, 00:34
Цитата Сообщение от mettall61 Посмотреть сообщение
из-за точек и цифр в имени?
именно. И из-за, как обычно, нежелания или неполного приведения условия задачи. В данном случае неполно указана маска имен файлов, я работал только с тем что приведено было.
2
1 / 7 / 0
Регистрация: 19.09.2017
Сообщений: 81
09.12.2019, 04:04
прошу помочь. похожая задача, но с модификацией.

1. есть файлы изображений, которые раскиданы по папкам рекурсивно. вида: ИМЯ-00000.jpg (могут быть другие расширения, хотелось бы возможность иметь дать также их указание на поиск)
2. необходимо их рассортировать по имени, принимая в расчет только сопоставление до символа "-", по папкам с такими же именами, создавая их на лету (для первого раза). дубликатов файлов не будет, тк индекс создается всквозную другой программой.
3. файлы которые не имеют маску по имени *-* игнорировать, чтобы не плодить мусорные папки

спасибо!
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
09.12.2019, 23:33
Anyaax,
Windows Batch file
1
2
3
4
5
6
7
8
9
10
@echo off
for /f "delims=" %%d in ('dir /ad/b/s "C:\Papka"') do (
 pushd "%%d"
  for /f "tokens=1* delims=-" %%a in ('dir /a-d/b') do (
   if not exist "%%~na" md "%%~na"
   move "%%a-%%b" "%%~na"
  )
 popd
)
pause
проверял на такой структуре:
Кликните здесь для просмотра всего текста

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
C:\PAPKA
├───A
│       ИМЯ-00000.txt
│       ИМЯ-00001.txt
│       ИМЯ-00033.txt
│       ИМЯ1-00002.txt
│       ИМЯ1-00050.txt
│       
└───B
        ИМЯ-00000.txt
        ИМЯ-00001.txt
        ИМЯ-00033.txt
        ИМЯ1-00002.txt
        ИМЯ1-00050.txt
        ИМЯ3-11111.txt
        ИМЯ3-11144.txt
1
1 / 7 / 0
Регистрация: 19.09.2017
Сообщений: 81
10.12.2019, 04:47
alpap
смотришь на такой код как на какую то магию ) большое спасибо! чудо когда есть такие отзывчивые люди. спасибо, все работает!
один только нюанс остался неисполненным - для файлов не удовлетворяющих условию, папки создаются тоже, без переноски файлов (сообщение об ошибке). как бы не проблема, но если это можно не делать, лучше не делать, иначе будут созданы тысячи ничего не значащих подпапок в поддиректориях.
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
10.12.2019, 16:17
Anyaax,
измените в 4й строке на:
Windows Batch file
1
... in ('2^>nul dir /a-d/b "*-*"') do ...
но у cmd не такая сильная регулярка, надо извращаться чтобы все варианты исключить, например файл: "ИМЯ-00000-22222" удовлетворит маску выше и будет обработан, но не так как хотелось бы потому что для данного кода for /f его порубает по своему.
0
 Аватар для volodin661
6791 / 2288 / 348
Регистрация: 10.12.2013
Сообщений: 7,897
10.12.2019, 18:52
Цитата Сообщение от mettall61 Посмотреть сообщение
Задача: есть папка в которой свалены документы с почты. Постоянно подступают новые файлы и хочется как то это все автоматизировать.
подобные задачи решают нормальные файловые менеджеры ( Total Commander ) безо всяких папок и мамок.

Добавлено через 3 минуты
Если требуется корпоративный уровень решения, то для этого существует Windows Search.
0
1 / 7 / 0
Регистрация: 19.09.2017
Сообщений: 81
11.12.2019, 02:29
Цитата Сообщение от alpap Посмотреть сообщение
но у cmd не такая сильная регулярка, надо извращаться чтобы все варианты исключить, например файл: "ИМЯ-00000-22222" удовлетворит маску выше и будет обработан, но не так как хотелось бы потому что для данного кода for /f его порубает по своему.
поняла. такие расхождения маловероятны, а сама я их специально не буду допускать. спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.12.2019, 02:29
Помогаю со студенческими работами здесь

Раскидать по папкам с переименованием файлов по маске
Добрый день. Помогите пожалуйста. Необходимо общую кучу файлов типа yymmdd_000_имяфайла.xls разбросать по папкам с именами...

Распределение файлов по папкам, соответствующим расширениям файлов
Здравствуйте. Есть папка Downloads и в ней множество файлов с разным расширением (mp3, jpeg, rar и т.д.). Хотелось бы чтобы bat-файл...

Раскидать (рассортировать) медиа-файлы по папкам по критерию
Допустим, есть у меня файлы с музыкой, видео, медиа вобщем, в какой-то папке. И программой их нужно рассортировать по папкам. Допустим, по...

Разложить файлы по папкам с соответствующим именем
Вопрос по теме. Подскажите как можно реализовать следующую задачу: Есть папки с именованные от 1 до 1000, а также есть одноименные файлы...

Как Циклом пройтись по папкам без привязки к именам?
Добрый день! Подскажите пожалуйста имеется некая папка "folder" И в ней имеются подпапки 1, 2, 3, ... , Некое число. Есть ли...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru