foxidrive дал уже правильную помощь, чтобы найти решение ,
@echo off
set "SourceDir=C:\pathTo\source"
FOR /d %%i IN ("%SourceDir%\*") DO FOR /f "delims=." %%j IN ("%%i") DO REN "%%~i" "%%~nj"
set SourceDir=
%%~nj
вместо %%j
необходимо удалить путь к папке и получить только новое имя папки без пути.
А также можно будет следующее как предложено Andriy M:
@echo off
set "SourceDir=C:\pathTo\source"
FOR /d %%i IN ("%SourceDir%\*") DO FOR /f "delims=." %%j IN ("%%~ni") DO REN "%%~i" "%%j"
set SourceDir=
Это даже лучше, в случае одного из родительских папок также содержит точку в имени.
Но если все папки имеют точку в имени, как Component.One
до версии строки, которая должна быть сохранена, следующий пакетный код может быть использован:
@echo off
set "SourceDir=C:\pathTo\source"
FOR /d %%i IN ("%SourceDir%\*") DO FOR /f "tokens=1,2* delims=." %%j IN ("%%~ni") DO REN "%%~i" "%%j.%%k"
set SourceDir=
И еще одно решение, которое удаляет последний 4 символов из имени папки, если последний, но третий символ является точка:
@echo off
setlocal EnableDelayedExpansion
set "SourceDir=C:\pathTo\source"
FOR /d %%i IN ("%SourceDir%\*") DO (
set "FolderName=%%~nxi"
if "!FolderName:~-4,1!"=="." REN "%%~i" "!FolderName:~0,-4!"
)
endlocal
Удалите это '%% ~ xi' и поставьте эхо перед« REN », чтобы вы могли видеть результаты в первую очередь перед вы его совершаете. – foxidrive
Имеет ли строка версии в конце имени папки 4 символа?Тогда было бы лучше переименовать папки, удалив эти 4 символа в конце имени папки в случае последнего, а третьего символа - точки. – Mofi