Bat файл для копирования музыки

Тема в разделе "Windows", создана пользователем Denixxx, 13 ноя 2014.

Модераторы: ADMiNZ
  1. Denixxx

    Denixxx

    Регистр.:
    7 фев 2014
    Сообщения:
    247
    Симпатии:
    191
    Часто бывала ситуация, когда созданную в плейлисте на компе музыку хотелось бы проиграть на других устройствах с флешки.
    Winamp создаёт плейлист в формате m3u, и внутри его — ссылки на файлы mp3
    Однако возникает проблема получить список файлов и скопировать это на флешку.
    После того, как жена в 5-й раз попросила обновить на флешке музыку, я задумался об автоматизации этого процесса.
    И написал bat-файл для этого.
    Вот его код, авось кому ещё пригодится:
    Код:
    @echo off
    Setlocal EnableExtensions
    set /p filein=" Введите имя плейлиста: "
    set /p disk=" Введите диск куда копировать файлы: "
    chcp 1251>nul
    set LanguageFlag=true
    mkdir "%disk%\%DATE%"
    for /f "usebackq delims= eol=#" %%a in ("%filein%") do (
    if defined LanguageFlag (chcp 866>nul& set LanguageFlag=)
    rem echo %%a
    rem echo %disk%\%DATE%\%%~na.mp3
    copy /y "%%a" "%disk%\%DATE%\%%~na.mp3"
    )
    pause
    Файл ложится в папку с плейлистом.
    При запуске запрашивает:
    1. Имя плейлиста — например введите sound.m3u
    2. Диск куда скопировать файлы из плейлиста, например введите K:

    Как работает:
    Создает папку с датой на введённом диске типа 13.11.2014 и копирует туда файлы, найденные в плейлисте.

    В bat-файлах есть проблемы с их интерпретацией русского текста, поэтому прилагаю архив этого маленького файла. Поскольку тупое копирование текста во вновь созданный файл не поможет, только вдумчивое;)

    Что не получилось сделать, а заодно и возможные проблемы:
    1. Не разобрался как писать имя файла с расширением, потому написал в копии — имя файла + жёстко расширение mp3. Буду рад если кто подправит как правильно — копировать первоначальное имя файла с его расширением.
    2. Наличие файлов на диске не проверяется. Ни в источнике, ни в назначении.
    3. Файлы желательно иметь возможность переименовать в виде 01-исходный_файл.mp3 и далее по порядку. Чтобы на устройствах, которые не поддерживают плейлисты, файлы шли жестко по порядку как в плейлисте. Пока не знаю как сделать.

    Задача вроде бы изначально казалась простой, однако при решении сказалась вся убогость bat-файлов для таких целей: зоопарк кодировок внутри винды вызывал кракозяблики то в меню скрипта, то в названиях файлов на кириллице.
    Если есть решение получше — у кого есть, просьба поделитесь.
     

    Вложения:

    • copy.zip
      Размер файла:
      402 байт
      Просмотров:
      2
    Последнее редактирование: 13 ноя 2014
    latteo нравится это.
  2. efs

    efs SEO оптимизатор дискрипторов одностраничных сайтов

    Moderator
    Регистр.:
    20 ноя 2009
    Сообщения:
    827
    Симпатии:
    480
    ИМХО лучше copy заменить на xcopy
     
  3. SynergyIT

    SynergyIT Постоялец

    Регистр.:
    19 июл 2013
    Сообщения:
    82
    Симпатии:
    19
    У меня решение простое AIMP. В него встроена функция копирования файлов по списку плейлиста.
     
    Denixxx нравится это.
  4. Denixxx

    Denixxx

    Регистр.:
    7 фев 2014
    Сообщения:
    247
    Симпатии:
    191
    Чем лучше? Я не сторонник стрелять из пушки по воробьям. Я не копирую каталоги с подкаталогами, а файлы в цикле один за другим.
    Если знаете что-то, напишите код.
    Спасибо за инфу, попробуем.
     
  5. efs

    efs SEO оптимизатор дискрипторов одностраничных сайтов

    Moderator
    Регистр.:
    20 ноя 2009
    Сообщения:
    827
    Симпатии:
    480
    хотя бы ключом позволяющим игнорировать ошибки, может копировать файлы с атрибутами "скрытый", "системный" (кто знает что творится на накопителе у юзверя?). может копировать с использованием коротких имен, что актуально при копировании на носитель с файловой системой FAT и т.д.
     
  6. Denixxx

    Denixxx

    Регистр.:
    7 фев 2014
    Сообщения:
    247
    Симпатии:
    191
    Я знаю, что делает xcopy, но она работает медленней и не увидел чем в данном случае лучше — простой copy также умеет «с использованием коротких имен», проверять наличие и др. функции, которые в контексте данного скрипта нафиг не нужны:
    copy_help.png
    Если Вы что то другое, кроме сферического в вакууме «чем-то говорят это лучше», имели в виду, то второй раз предлагаю — напишите код, предполагающий, что xcopy лучше. С моей точки зрения copy лучше, ибо позволяет копировать файлы по сети «с возобновлением». Может, Вы докажете мне обратное, ХЗ.
    Я конечно тоже люблю букву X, это видно и по моему нику, но не до такой же степени, чтобы вставлять её в команды без разбора;)
     
    Последнее редактирование: 14 ноя 2014