С Новым годом! Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/45: Рейтинг темы: голосов - 45, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 19.02.2018
Сообщений: 74
1

Переименование файлов во вложенных папках

07.09.2018, 19:40. Показов 9261. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Уважаемые программисты, прошу помочь с автоматизацией следующей задачи.
Необходимо написать bat-файл, который будет делать следующее: запускается из корневой папки, делает перебор всех вложенных папок до конца (число уровней вложенности разное), если во вложенной папке есть файл – переименовывает его, добавляя в начало существующего имени файла имя последней (текущей) папки.

Пример: С:\Папка_ 1\Папка_2\sdcf1234.jpg --> Папка_2-sdcf1234.jpg
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.09.2018, 19:40
Ответы с готовыми решениями:

Выполнять поиск файлов во вложенных папках
В продолжение темы https://www.cyberforum.ru/cmd-bat/thread938336.html Выполняю архивацию doc...

Батник удаления файлов во вложенных папках
Добрый день. Есть папка ГлавнаяПапка, в ней есть папки Папка1, Папка2, Папка3, Папка4 и т.д. В...

Массовое переименование в папках файлов со счетчиком
Привет. Есть несколько тысяч каталогов с фотофайлами внутри. Нужно пройти по каждому каталогу...

Переименование файлов в папках с учетом структуры каталогов
Приветствую. В батниках не силен, по сему вопрошаю о помощи. Есть древовидная структура...

7
4336 / 2126 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
07.09.2018, 21:34 2
Лучший ответ Сообщение было отмечено Abraxis2018 как решение

Решение

Windows Batch file
1
2
3
4
5
6
7
8
9
10
@echo off
set "d=C:\papka"
 
for /r /d %%d in ("*") do (
 pushd "%%d"
  for /f "delims=" %%f in ('2^>nul dir /a-d/b "*"') do ren "%%f" "%%~nxd-%%f"
 popd
)
popd
pause
2
0 / 0 / 0
Регистрация: 19.02.2018
Сообщений: 74
08.09.2018, 12:04  [ТС] 3
Отлично, все работает! Огромное спасибо, вы сэкономили мне большое количество рабочих часов
0
0 / 0 / 0
Регистрация: 06.09.2019
Сообщений: 12
06.09.2019, 15:13 4
сем добрый день! Есть желание самому поразбираться в командах, поэтому (пока что) никаких конкретных bat-файлов не прошу написать.

Вопросы по написанному в этой теме коду
Цитата Сообщение от alpap Посмотреть сообщение
Windows Batch file

Windows Batch file
1
2
3
4
5
6
7
8
@echo off
set "d=C:\papka"
for /r /d %%d in ("*") do (
 pushd "%%d"
 for /f "delims=" %%f in ('2^>nul dir /a-d/b "*"') do ren "%%f" "%%~nxd-%%f"
 popd
)
popd
1) Верно ли я понимаю, что 3ая строка задает обход по самим каталогом (/r) и предполагает работу с их названиями (/d), а в качестве обхода задана вся папка ("*")?
2) Зачем нужно "delims=" в 5ой строке?
3) Что именно делает команда '2^>nul dir /a-d/b "*"' в 5ой строке?
0
4336 / 2126 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
06.09.2019, 15:54 5
Цитата Сообщение от WWHC Посмотреть сообщение
/r
рекурсия - путешествие в глубину
Цитата Сообщение от WWHC Посмотреть сообщение
/d
предписывает работу только с папками, на файлы не смотрим
Цитата Сообщение от WWHC Посмотреть сообщение
Зачем нужно "delims="
по умолчанию (см. справку: for /?) разбиение строки по пробелу и если не определить разбиение по ничего, то из строки с пробелом будет взята только часть ее до пробела, а не вся строка (напр.: имя папки "Papka 12" может превратиться в "Papka" и просто не будет найдена, если таковой нет)
далее читайте справку: dir /? и все отсюда, так как вопросов меньше не станет далее, наоборот.
1
0 / 0 / 0
Регистрация: 06.09.2019
Сообщений: 12
06.09.2019, 18:24 6
Спасибо, с используемыми параметрами для dir разобрался.
И даже (в первом приближении) с конструкцией 2^>nul.

А верно я понимаю, что ~nxd должно взять имя с расширением файла, но благодаря тому, что файл согласно параметру /d в передыдущем for у нас является папкой, то и остается у нас только само и название этой папки?
0
4336 / 2126 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
06.09.2019, 21:08 7
Цитата Сообщение от WWHC Посмотреть сообщение
файл согласно параметру /d в передыдущем for у нас является папкой
Цитата Сообщение от WWHC Посмотреть сообщение
~nxd должно взять имя с расширением файла
тут вот в чем дело.
Например имя папки: "Papka.2019" и если взять ~nd, то выводом будет: "Papka", а не "Papka.2019" как вывело бы при ~nxd.
1
0 / 0 / 0
Регистрация: 06.09.2019
Сообщений: 12
07.09.2019, 18:39 8
Точно! Спасибо за пояснение!
0
07.09.2019, 18:39
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.09.2019, 18:39
Помогаю со студенческими работами здесь

Переименование файлов в папках с добавлением к именам этих файлов имён этих папок
Есть 4 папки с архивом записей с камеры видеонаблюдения с именами 13 14 15 16. В каждой папке...

Написать сценарий для подсчёта количества файлов в заданной папке, включая файлы во вложенных папках
для командной строки реализация FOR Написать сценарий, который который подсчитает количество...

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

Удаление всех файлов в папках и под папках, кроме тех в которых в названии есть определенно слово
Всем привет, я так сказать чайник чтоле, я посерфил форум нашел пару похожих тем но всеже не то что...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Что такое HCL Notes и как с ним работать
InfoMaster 10.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой комплексную платформу для совместной работы и обмена информацией в корпоративной среде. Это многофункциональное решение,. . .
Как работать с Git из Windows и Visual Studio
InfoMaster 10.01.2025
Работа с Git в Windows Работа с Git в операционной системе Windows может быть осуществлена с помощью различных инструментов, каждый из которых обладает своими уникальными возможностями и. . .
Аналог оператора switch case в Python
InfoMaster 10.01.2025
Оператор switch case используется в программировании для выбора одного из нескольких вариантов исполнения кода. Однако в языке Python этот оператор отсутствует. Понимание аналогов switch case в. . .
Отличия абстрактного класса от интерфейса
InfoMaster 10.01.2025
В современной разработке программного обеспечения существуют два основных механизма реализации абстракции: абстрактные классы и интерфейсы. Эти инструменты, хотя и схожи в своей основной цели -. . .
Как работать в Git
InfoMaster 10.01.2025
Git — это одна из наиболее популярных систем контроля версий, которая активно используется разработчиками по всему миру. Она позволяет эффективно управлять изменениями в коде, координировать работу. . .
Реализация передвижения персонажа в Unity3d на C#
InfoMaster 10.01.2025
Реализация передвижения персонажа в Unity3D начинается с правильной настройки проекта. Этот этап критически важен для создания отзывчивого и плавного управления. Рассмотрим основные шаги для создания. . .
Docker: руководство для начинающих
InfoMaster 10.01.2025
В современном мире разработки программного обеспечения контейнеризация стала неотъемлемой частью процесса создания и развертывания приложений. Docker, как ведущая платформа контейнеризации, произвела. . .
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru