я использую пакетный файл (с именем folder.bat), чтобы добавить строку _v0_1 для каждого имени папки в моей папке (у меня около 100 папок в моей папке)
Я вызываю свой пакет (folder.bat) из другого пакетного файла, который содержит эти строки (например):
папка вызова arbiter_logic
папка вызова arbiter_logic_old
проблема в том, что пакетное переименование папок также происходит, когда имя папки длиннее имени переменной (% 1), и я хочу этого избежать.
Я хочу, чтобы действие переименования выполнялось только в том случае, если существует точное совпадение между переменной %1 и именем папки. Вот мой код:
setlocal enabledelayedexpansion
pushd G:\my folder
for /f "tokens=* delims= " %%a in ('dir /b/ad') do (
set x=%%a
set y=!x:%1=%1_v0_1!
ren !x! !y!
)
::==
cd..
в настоящее время нежелательный результат:
арбитр_логика_v0_1
арбитр_логика_v0
old_v0_1setlocal enabledelayedexpansion pushd G:\my folder for /f "tokens=* delims= " %%a in ('dir /b/ad') do ( set x=%%a set y=!x:%1=%1_v0_1! ren !x! !y! ) ::== cd..
и желаемый результат заключается в том, что пакет изменит имя папки, как показано ниже:
арбитр_логика_v0_1
arbiter_logic_old_v0_1
Я предполагаю, что необходимо применить метод поиска и замены в именах папок, но я не уверен, как это сделать.
vb script также будет подходящим решением, если пакетный файл не подойдет.
Заранее спасибо. шей.