Найти в текущей папке и подпапках файлы и папки в имени которых есть "+" и "&" и заменить их на " plus " и " and ", удалив двойные пробелы

Рейтинг: 0Ответов: 1Опубликовано: 29.03.2023

Имена файлов/папок могут быть на латинице и кириллице, содержать искомые символы в любых количествах и комбинациях

К сожалению не смог найти учебника по синтаксису и не понимаю как это сделать

Ответы

▲ 0Принят

Замена символов в переменной производится с помощью конструкции %varName:str1=str2% или !varName:str1=str2! (заменит все вхождения str1 на str2).
Подробнее об этом можно узнать с помощью команды help set.

Команда dir /s /b рекурсивно выводит все имена файлов и папок.
Цикл for проходится по каждой строке из вывода команды и запускает блок do. В нем происходит проверка имени и переименование файла/папки.

@echo off
cd /d %~dp0
setlocal EnableDelayedExpansion
for /f "tokens=*" %%i in ('dir /s /b') do (
    set "fileName=%%i"
    set "eFileName=!fileName:+=plus!"
    set "eFileName=!eFileName:&=and!"
    if not "!fileName!"=="!eFileName!" move "!fileName!" "!eFileName!"
)