[CMD] Пакетная замена отдельных символов имён директорий в рамках одного каталога

Mamustsm

Новый пользователь
Сообщения
5
Реакции
0
Баллы
11
Доброго времени суток!
Существуют в одной директории, большое количество директорий (папок), с именами типа "dir abc_123.4", "dir. abc_123.4".
Вопрос: возможно ли реализовать замену символов "_", "." в именах директорий, пакетным файлом BAT? В варианте "dir. abc_123.4" желательно оставить первую "." не тронутой (если это возможно).
Заранее спасибо!
 

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,132
Реакции
5,906
Баллы
648
Здравствуйте, @Mamustsm !

Добро пожаловать на SafeZone.

возможно ли реализовать замену символов "_", "." в именах директорий, пакетным файлом BAT?
Можно.
Вы хотите переименовать папки?
Замену чего на что?
 

Mamustsm

Новый пользователь
Сообщения
5
Реакции
0
Баллы
11
Да, нужно переименовать, около трёх тысяч папок. Изменить в имени знак "_" (нижнее подчеркивание) на "-" (дефис или минус). Удалить точку между цифрами в конце имени папок.
 

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,132
Реакции
5,906
Баллы
648
На cmd это будет сделать проблематично. На VBS подойдёт?
Либо нужны более точные критерии, например, слева от точки, которую нельзя удалять, всегда стоит слово "dir", или может быть что-то другое?
 

Mamustsm

Новый пользователь
Сообщения
5
Реакции
0
Баллы
11
Доброго времени суток!
Точку в названии желательно не удалять, так как она может быть частью сокращённого слова. Имена папок уникальны, как и их код в скобках, но, код содержит одинаковое количество символов как в примере ниже. Знак "_" (нижнее подчеркивание) и точка в коде имени всегда в одном месте. Точка, третья с конца имени, нижнее подчеркивание девятое, с конца имени папки, считая точку.
Пример имени файла: "S.T.M. manager [DFTS_3006.02]"
Вы мне очень поможете, даже если эти точки удалятся из имён.
Пример допустимого результата: "STM manager [DFTS-300602]"
Поскольку визуально проверить отсутствие точек в сокращениях гораздо легче.
Подойдёт решение и на VBS.
P.S. Мне не приходилось писать в Visual Basic Scripting.
Спасибо!
 

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,132
Реакции
5,906
Баллы
648
Ладно, ещё один вопрос: имя и код вcегда разделены символом [
?
 

Mamustsm

Новый пользователь
Сообщения
5
Реакции
0
Баллы
11
Да, верно, разделены. Код заключён в символы [].
 

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,132
Реакции
5,906
Баллы
648
В таком случае, можно подобрать правило и для CMD:

CMD/BATCH:
@echo off
SetLocal EnableExtensions EnableDelayedExpansion

set Folder=g:\test\do

For /f "delims=[ tokens=1*" %%a in ('dir /b /ad "%Folder%\*"') do (
  set name=%%a
  set ID=%%b
  set "ID=!ID:_=-!"
  set "ID=!ID:.=!"
  echo "%%a[%%b" =^> "!name![!ID!"> example.txt
  rem ren "%Folder%\%%a[%%b" "!name![!ID!"
)

pause
Папку задавать в переменной Folder.
Будет создан файл example.txt с предлагаемыми заменами.
Если всё устраивает, удалите строку с echo, а также команду rem.
Предупреждение: если в имени папки попадутся знаки восклицания (!), все они будут удалены.
 

regist

гоняюсь за туманом
Ассоциация VN/VIP
VIP
Разработчик
Сообщения
12,335
Реакции
5,956
Баллы
998
Извиняюсь, но для чего заморачиваться с скриптом если можно сделать пакетное переименование с Total Commander. Или такое переименование надо делать регулярно? Да даже если регулярно, то можно сохранить шаблон в ТС.
PS. просто предлагаю вам более гибкое и простое на мой взгляд решение.
 

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,132
Реакции
5,906
Баллы
648
@regist, никогда, кстати, не пробовал. А какой функцией там вызывается переименование по регулярке?
 

regist

гоняюсь за туманом
Ассоциация VN/VIP
VIP
Разработчик
Сообщения
12,335
Реакции
5,956
Баллы
998
Dragokas, Ctrl + M. Дальше думаю разберёшься, если нет, то можешь посмотреть в русском переводе справки.
 

regist

гоняюсь за туманом
Ассоциация VN/VIP
VIP
Разработчик
Сообщения
12,335
Реакции
5,956
Баллы
998
И по переименованию широкие возможности даже если не включать опцию регулярки.
Немного устаревшая Онлайновая русская справка (для TC 8.52a, 17.04.2016) Справка по Total Commander
 
Последнее редактирование:

Mamustsm

Новый пользователь
Сообщения
5
Реакции
0
Баллы
11
Предупреждение: если в имени папки попадутся знаки восклицания (!), все они будут удалены.
Огромное спасибо! Работает правильно, точки в именах сохраняет.
А папки со знаком "!" в имени просто не трогает, оставляет как есть, не переименовывая и не удаляя знак "!". Это мелочь.
Спасибо!
 
Сверху Снизу