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

Переместить файлы в соседние новые папки по расширениям

12.06.2017, 22:10. Показов 1714. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Прошу помощи в написании bat файла, который бы делал следующее:
Есть структура папок:

\*\*\PSD\*.PSD
\*\*\PSD\*.PSD
\*\*\PSD\*.PSD
\*\*\PSD\*.JPG
\*\*\PSD\*.JPG
\*\*\PSD\*.JPG
\*\*\PSD\*.PNG
\*\*\PSD\*.PNG
\*\*\PSD\*.PNG

На нижнем уровне которой есть папка с название "PSD" (название этой папки не меняется), в ней находятся файлы с тремя расширениями - *.psd, *.jpg, *.png. Нужно чтобы скрипт переместил файлы с расширениями *.jpg и *.png в соседние папки с названиями "JPG" и "PNG" соответственно. Если папок "JPG" и "PNG" нет - то нужно создать их.

После работы скрипта папки должны выглядеть следующим образом:

\*\*\PSD\*.PSD
\*\*\PSD\*.PSD
\*\*\PSD\*.PSD
\*\*\JPG\*.JPG
\*\*\JPG\*.JPG
\*\*\JPG\*.JPG
\*\*\PNG\*.PNG
\*\*\PNG\*.PNG
\*\*\PNG\*.PNG

Заранее благодарю за помощь!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.06.2017, 22:10
Ответы с готовыми решениями:

Рекурсия. Войти во второй уровень каталогов, создать папку и переместить в нее соседние папки
Здравствуйте. Пожалуйста, помогите решить задачу. Есть главный каталог (в нашем примере - "3"), в нем десятки каталогов...

Переместить папки и файлы из заданной папки
Ребят простите простая задача а у меня что-то "лыжи вообще не едут" цель 1) имеем папку с файлами и подпапками 2) саму папку...

Файл: как можно переместить новые добавленные файлы в заданную папку
Подскажите пожалуйста, как лучше реализовать работу с файлами. Написала программу которая перемещает файлы из папки в папку.вопрос в...

12
353 / 165 / 61
Регистрация: 01.06.2015
Сообщений: 656
13.06.2017, 10:55
Самое банальное:
Windows Batch file
1
2
move psd\*.jpg jpg\
move psd\*.png png\
если путь \*\*\PSD\*.PSD, то запускать в \*\*\
Ну и папки должны существовать
или как-то так:
Windows Batch file
1
2
3
4
5
cd путь_к_папке
for %%n in (jpg png) do (
    if not exist %%n md %%n
    move psd\*.%%n %%n\
)
0
0 / 0 / 0
Регистрация: 12.06.2017
Сообщений: 6
13.06.2017, 14:34  [ТС]
Ваш нижний скрипт:

Windows Batch file
1
2
3
4
5
cd путь_к_папке
for %%n in (jpg png) do (
    if not exist %%n md %%n
    move psd\*.%%n %%n\
)
работает как надо, но как сделать так чтобы он запускался с самого верхнего уровня папок?
Приведенный набор папок это только одна ветка большого массива таких же папок.
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
13.06.2017, 15:19
Цитата Сообщение от Georot Посмотреть сообщение
с самого верхнего уровня папок
почему?
вы сами написали \*\*\..., т.е. по логике "PSD" это старт (база).
0
0 / 0 / 0
Регистрация: 12.06.2017
Сообщений: 6
13.06.2017, 15:35  [ТС]
Хм... вроде вообще не говорил, где должен размещаться батник. Думал если опишу верхнюю структуру папок то буде понятно, что батник должен быть на верхнем уровне папок.

Добавлено через 9 минут
Папка "PSD" это папка, название которой не меняется, но путь к этой папке всегда будет разным, поэтому я и обозначил имена верхних уровней "*".
Bat-файл должен запускаться на верхнем уровне папок, искать папку "PSD" и перемещать из нее файлы с расширением jpg и png в соседние одноименные папки.
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
13.06.2017, 15:45
Цитата Сообщение от Georot Посмотреть сообщение
искать папку "PSD"
Windows Batch file
1
dir /ad/b/s|find "PSD"
Добавлено через 2 минуты
переход:
Windows Batch file
1
for /f "delims=" %%A in ('dir /ad/b/s "*"^|find "PSD"') do cd /d "%%A"
0
353 / 165 / 61
Регистрация: 01.06.2015
Сообщений: 656
13.06.2017, 18:14
ну и объединить всё:
Windows Batch file
1
2
3
4
5
6
7
for /f "delims=" %%A in ('dir /ad/b/s "*"^|find /i "PSD"') do (
    cd /d "%%A\.."
    for %%n in (jpg png) do (
        if not exist %%n md %%n
        move psd\*.%%n %%n\
    )
)
0
0 / 0 / 0
Регистрация: 12.06.2017
Сообщений: 6
13.06.2017, 22:15  [ТС]
Да, этот скрипт работает. Он находит первую попавшуюся папку "PSD" и перемещает из нее файлы.
Возможно я изначально неточно выразился, но суть задачи такова, что таких папок "PSD" много и находятся они в разных ветках каталога и манипуляции нужно произвести со всеми сразу.

Вот пример структуры папок и файлов в них:

Test\D1\D01\PSD\1.psd
\1.png
\1.jpg
Test\D1\D02\PSD\1.psd
\1.png
\1.jpg
Test\D1\D03\PSD\1.psd
\1.png
\1.jpg
Test\D2\D01\PSD\1.psd
\1.png
\1.jpg
.... ... .... ...... .....
Test\*\*\PSD\1.psd
\1.png
\1.jpg

Получается, что есть корневая папка Test в которой будет находиться bat-файл. При запуске батник должен найти во всех нижестоящих папках(D1, D2 и т.д.) папки "PSD" и переместить из них файлы .jpg и .png в папки JPG и PNG соответственно. Структура папок после обработки будет выглядеть следующим образом:

Test\D1\D01\PSD\1.psd
\PNG\1.png
\JPG\1.jpg
Test\D1\D02\PSD\1.psd
\PNG\1.png
\JPG\1.jpg
Test\D1\D03\PSD\1.psd
\PNG\1.png
\JPG\1.jpg
Test\D2\D01\PSD\1.psd
\PNG\1.png
\JPG\1.jpg
..... ... ..... .... ......
Test\*\*\PSD\1.psd
\PNG\1.png
\JPG\1.jpg

Вот, так думаю будет наиболее полно описана задача.
0
353 / 165 / 61
Регистрация: 01.06.2015
Сообщений: 656
14.06.2017, 08:42
В таком случае вам нужно подправить
Windows Batch file
1
2
if not exist \fullpath\%%n md \fullpath\%%n
move psd\*.%%n \fullpath\%%n\
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
14.06.2017, 09:06
Windows Batch file
1
2
3
4
5
6
7
@echo off
for /f "delims=" %%A in ('dir /ad/b/s "*"^|find "PSD"') do (
 pushd "%%A"
  код ixoyz
 popd
)
pause
0
0 / 0 / 0
Регистрация: 12.06.2017
Сообщений: 6
14.06.2017, 09:54  [ТС]
У меня что-то не взлетело...
Вот скрипт

Windows Batch file
1
2
3
4
5
6
7
8
@echo off
for /f "delims=" %%A in ('dir /ad/b/s "*"^|find "PSD"') do (
 pushd "%%A"
    if not exist \fullpath\%%n md \fullpath\%%n
    move psd\*.%%n \fullpath\%%n\
 popd
)
pause
После запуска выдает ошибку:
"Не удается найти указанный файл.
Системе не удается найти указанный путь."
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
14.06.2017, 14:32
Цитата Сообщение от Georot Посмотреть сообщение
У меня что-то
не, код ixoyz надо было брать из п2, мы же уже в нужной папке:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
@echo off
for /f "delims=" %%A in ('dir /ad/b/s "*"^|find "PSD"') do (
 pushd "%%A"
  for %%n in (jpg png) do (
   if not exist "%%n" md "%%n"
   move "%%A\*.%%n" "%%n\"
  )
 popd
)
pause
0
0 / 0 / 0
Регистрация: 12.06.2017
Сообщений: 6
14.06.2017, 15:11  [ТС]
Скрипт работает, но есть 2 момента:
1. Не читаются русские имена папок
2. Папки "JPG" и "PNG" создаются в папке "PSD", а нужно создавать рядом с ней
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.06.2017, 15:11
Помогаю со студенческими работами здесь

как переместить файлы из папки?
Работаю в MFC. Требуется перемести все файлы (и папки) из каталога "C:\ico\~" в каталог "C:\ico". Рылся в SHFILEOPSTRUCT но...

Переместить файлы из папки A в папку B
Объясняю проблему. Linux bash. К примеру, "2018-08-20--20-00-02" - это часть имён файлов из списка файлов ниже и оно же является самой...

Проверка папки на новые файлы
Доброго времени суток! В общем есть папка, куда приходят каждый день файлы, необходим батник, который будет оповещать сразу, как только...

Переместить файлы из одной папки в другую
Деньдобрый Есть Папка 1 Файл 1 Файл 2 Есть

Переместить файлы из одной папки в другую
Добрый день, подскажите пожалуйста, как мне извлечь фалы с одной папки допустим в папку на диске С?


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru