1. Администрация SafeZone приветствует вас на нашем форуме!
    Если вы больше не желаете видеть рекламу при просмотре тем и сообщений - то достаточно просто зарегистрироваться. Для зарегистрированных пользователей реклама не отображается.
    Если у вас возникли проблемы с регистрацией на форуме - то вы можете сообщить об этом с помощью этой формы без авторизации,администрация форума обязательно отреагирует на вашу проблему.
    Скрыть объявление

Взять имя файла, удалить символы и создать каталог

Тема в разделе "Пакетные файлы CMD, BAT", создана пользователем arch144, 4 июл 2016.

Метки:
  1. arch144

    arch144 Новый пользователь

    Сообщения:
    2
    Симпатии:
    0
    Стоит такая задача
    Есть каталог например PATH\SOURCE
    В нем находятся файлы созданные по шаблону имя-номер.jpg
    123-01.jpg
    12345-02.jpg
    123-02.jpg
    1234-10.jpg
    Нужно взять эти файлы, вычленить у них имя. По этому имени создать папку и поместить в эту папку файл переименовав его по номеру.

    Т.е. В указанном выше примере в результате мы получим такие папки и имена файлов:
    PATH\123\01.jpg
    PATH\12345\02.jpg
    PATH\123\02.jpg
    PATH\1234\10.jpg
    сам батник находится тут PATH\test.bat

    Как вычленить имена файлов и из них сделать папки это я осилил, взяв за основу чей-то батник.
    Но вот как из имени файла взять только то, что до дефиса находится, а потом файл обозвать по второй части имени? Моих скудных познаний не хватает ))
    Буду признателен за любую помощь. Хотя бы какие-то образцы. Может какой-то цикл с перебором символов с условием пока не наткнется на "-"?
     
  2. Dragokas

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    5.146
    Симпатии:
    5.030
    Здравствуйте, arch144 !

    Код (DOS):
    @echo off
    SetLocal EnableExtensions

    cd /d "%~dp0"

    set "srcFolder=.\SOURCE"

    for /f "delims=" %%f in ('dir /b /a-d "%srcFolder%\*.jpg"') do (
      for /f "tokens=1* delims=-" %%a in ("%%f") do (
        if not exist "%%a" md "%%a"
        move /y "%srcFolder%\%%f" "%%a\%%b"
      )
    )

    pause
     
    Кирилл нравится это.
  3. arch144

    arch144 Новый пользователь

    Сообщения:
    2
    Симпатии:
    0
    Круто!! :)
    Спасибо огромное!
    И главное теперь есть от чего отталкиваться. Есть более сложные задачи с другим уровнем вложения, но принцип примерно такой же. И их уже сам попробую раскидать. :Good:
    --- Объединённое сообщение, 4 июл 2016 ---
    а.. я понял. Дефис выступает в качестве разделителя и у нас сразу появляется 2 нужные переменные. И не надо никаких переборов символов. Все гениальное просто :)
     
  4. Dragokas

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    5.146
    Симпатии:
    5.030
    Пожалуйста. Обращайтесь.
    Да.
    1*
    1 - означает, что первая часть (перед разделителем) попадет в переменную цикла %%a
    * - означает, что все последующие части (в т.ч. и разделители) попадут в следующую букву, т.е. %%b
     
Загрузка...
Похожие темы - Взять файла удалить
  1. alex-s
    Ответов:
    1
    Просмотров:
    601
  2. orderman
    Ответов:
    6
    Просмотров:
    694
  3. fulll
    Ответов:
    21
    Просмотров:
    1.424
  4. Foxik
    Ответов:
    5
    Просмотров:
    1.207
  5. alex_diablo
    Ответов:
    35
    Просмотров:
    3.327
  6. Phoenix
    Ответов:
    2
    Просмотров:
    1.164

Поделиться этой страницей