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

Перемещение папки в папку, названную частью имени этой папки

07.04.2019, 23:29. Показов 2707. Ответов 8

Author24 — интернет-сервис помощи студентам
Доброго времени суток, уважаемые форумчане!

Перерыл кучу похожих тем, но конкретно своего случая не нашел, поэтому решил написать сюда.

Имеется несколько тысяч папок с музыкой, названных в виде: Artist—Album, например Nirvana—1991 Nevermind. Требуется написать батник, который бы создавал папку, названную по типу Artist, а затем перемещал туда исходную папку с музыкой, но уже с названием в виде Album. То есть на выходе должно получиться так: папка Nirvana, внутри которой папка 1991 Nevermind.

Как видно, из общего у всех папок только знак тире. Если одним батником невозможно, можно несколькими.

В программировании я, к сожалению, почти полный нуб, а вручную всё сортировать - с ума сойдешь...

Буду очень благодарен за содействие!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.04.2019, 23:29
Ответы с готовыми решениями:

Копирование файлов из определённой папки в папку, названную по номерам года и недели с начала года
Доброго времени суток! Необходимо копировать файлы из конкретной папки в папку, путь к которой...

Создание папки по имени файла и перемещение файла в эту папку
Добрый день , Помогите пожалуйста с батником. У меня есть целая куча файлов в одной папке,...

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

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

8
6353 / 2778 / 1074
Регистрация: 06.06.2017
Сообщений: 9,425
08.04.2019, 02:10 2
Есть vbs-скрипт на др. форуме. ЛС, чтобы скинуть, у вас пока закрыт.
Требование для ЛС: "Не менее 3 сообщений, неотрицательная репутация, не менее 2 дней на форуме.".
0
6353 / 2778 / 1074
Регистрация: 06.06.2017
Сообщений: 9,425
08.04.2019, 03:51 3
Для батника можно взять Tag (в скрепке) и id3.
Если скрипты/сценарии не горят, то есть всякие GUI:
Tiger Files Renamer
Tags 2 Folders
Tag&Rename
TagScanner
Mp3tag
DropIt
IDTE
Вложения
Тип файла: 7z Tag_2.0.53.7z (221.7 Кб, 2 просмотров)
1
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
08.04.2019, 15:02 4
Лучший ответ Сообщение было отмечено Jazz_man как решение

Решение

Цитата Сообщение от Jazz_man Посмотреть сообщение
Имеется несколько тысяч папок с музыкой, названных в виде: Artist—Album, например Nirvana—1991 Nevermind. Требуется написать батник, который бы создавал папку, названную по типу Artist, а затем перемещал туда исходную папку с музыкой, но уже с названием в виде Album. То есть на выходе должно получиться так: папка Nirvana, внутри которой папка 1991 Nevermind.
Если все эти тысячи папок лежат в одном каталоге (например D:\Music), тогда вот пример реализации на Powershell (3.0 и выше):

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$folder = 'D:\Music'
 
Clear-Host
 
Get-ChildItem -LiteralPath $folder -Directory -Filter '*—*' | ForEach {
 
    $n   = $_.Name -split ' *— *',2
    $dst = Join-Path -Path $folder -ChildPath $n[0]
 
    if (-not (Test-Path $dst))
    {
        New-Item -Path $dst -ItemType Directory -Verbose -WhatIf
    }
    
    try   {Move-Item -LiteralPath $_.FullName -Destination $dst -Verbose -ErrorAction Stop -WhatIf}
    catch {Return}
    
    Write-Host "Rename: $dst\$($_.Name) ->" $n[1] -ForegroundColor Yellow
    #Rename-Item -LiteralPath "$dst\$($_.Name)" -NewName $n[1] -Verbose
 
}
Для запуска, открыть PowerShell_ISE, создать новый документ, вставить туда скрипт, 'D:\Music' поменять на нужный каталог, нажать Ctrl+A, а затем F8

Если на экране будет, то что ожидалось, тогда убрать из скрипта все ключи -WhatIf (2 штуки) и символ # из 19-ой строки, после чего снова нажать Ctrl+A, а затем F8
1
0 / 0 / 0
Регистрация: 07.04.2019
Сообщений: 6
08.04.2019, 21:06  [ТС] 5
И в первом и во втором случае выдает такое:

Get-ChildItem : Не удается найти параметр, соответствующий имени параметра "Directory".
строка:5 знак:46
+ Get-ChildItem -LiteralPath $folder -Directory <<<< -Filter '*—*' | ForEach {
+ CategoryInfo : InvalidArgument: ( [Get-ChildItem], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
0
6353 / 2778 / 1074
Регистрация: 06.06.2017
Сообщений: 9,425
08.04.2019, 22:06 6
Лучший ответ Сообщение было отмечено Jazz_man как решение

Решение

Jazz_man, до меня только дошло, что вам теги тащить из *.mp3 не нужно.
Батник:
Windows Batch file
1
2
3
@echo off&chcp 1251>nul
for /f "tokens=1,2 delims=—" %%a in ('dir *—* /ad/b/s') do ^
md "%%a" &>nul move "%%a—%%b" "%%a" &&ren "%%a\%%~nxa—%%b" "%%b"
1
0 / 0 / 0
Регистрация: 07.04.2019
Сообщений: 6
08.04.2019, 22:47  [ТС] 7
Спасибо огромное! Всё работает!
0
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
09.04.2019, 01:05 8
Цитата Сообщение от Jazz_man Посмотреть сообщение
Get-ChildItem : Не удается найти параметр, соответствующий имени параметра "Directory".
У вас PowerShell 2.0, а этот скрипт, как я писал, для 3.0 и выше. Версия проверяется так:

PowerShell
1
$PSVersionTable.PSVersion
Цитата Сообщение от Jazz_man Посмотреть сообщение
И в первом и во втором случае выдает такое
Эээ... вы мягко говоря смелый человек. Запускать второй раз, без -WhatIf, я предлагал только когда на экране будет, то что ожидалось, т.е. надписи: "будет создана папка такая-то", "в неё будет перемещена папка такая-то" и "переименована так-то". Но запускать без -WhatIf, после сообщений об ошибках - очень странное решение, так можно и всех файлов лишиться...
0
0 / 0 / 0
Регистрация: 07.04.2019
Сообщений: 6
09.04.2019, 14:16  [ТС] 9
Для тестирования скриптов создавал отдельную папку, в которую была скопирована часть файлов из исходной, так что всё в порядке В любом случае, спасибо за еще одно рабочее решение!
0
09.04.2019, 14:16
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.04.2019, 14:16
Помогаю со студенческими работами здесь

Перемещение файлов из папки в папку
Подскажите пожалуйста, как сделать перемещение файла из в папку в папку, но -&gt; Есть список и...

Переименовать папку в имя файла внутри этой папки
Привет. Есть папка АБВ. Есть файл (внутри или где-то еще) 123. Подскажите пожалуйста, как...

Как найти путь до папки и удалить папку внутри найденной папки
Здравствуйте, есть форма, на ней кнопка1, кнопка2 и едит, нужно сделать так чтобы при нажатии на...

При нажатии на кнопку,должны выводиться только папки этой папки и их содержимое
При нажатии на кнопку,должны выводиться только папки этой папки и их содержимое.Не должны...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Как программировать под HCL Notes и создавать свои продукты на ее основе
InfoMaster 11.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой мощную платформу для разработки корпоративных приложений, которая сочетает в себе функции электронной почты, календаря,. . .
Как работать с SVN (Subversion)
InfoMaster 11.01.2025
Введение Система контроля версий является неотъемлемой частью современного процесса разработки программного обеспечения. Она обеспечивает управление изменениями в коде, позволяет отслеживать. . .
Использование GraphQL в JavaScript
InfoMaster 11.01.2025
Введение в GraphQL и его преимущества В современной разработке веб-приложений эффективный обмен данными между клиентом и сервером играет ключевую роль. GraphQL представляет собой язык запросов и. . .
Администрирован­­­­ие Git, продвинутые техники работы с Git
InfoMaster 11.01.2025
Основы управления репозиторием Эффективное управление Git-репозиторием требует глубокого понимания механизмов контроля доступа и инструментов администрирования. Рассмотрим ключевые аспекты. . .
Что такое 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 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru