我有几个具有相同目录的文件夹,其名称如下:
001_Trial1
002_Trial2
003_Trial3
Trial4
Trial5
004_Trial6
005_Trial7
等...
我想重命名文件夹以获得
Trial1
Trial2
Trial3
Trial4
Trial5
Trial6
等...
我试图截断它,但问题是当文件夹为“ Trial3”时,它还将删除前四个字符,并将其重命名为“ 3”。
SetLocal DisableDelayedExpansion
For /D %%A In ("%1\*") Do (
Set "_d=%%~nxA"
SetLocal EnableDelayedExpansion
If Not Exist "%%~dpA!_d:~4!" Ren "%%A" "!_d:~4!"
EndLocal
)
我希望所有输出均以“ Trial”开头
答案 0 :(得分:0)
我在查看代码时注意到的第一件事是,您需要将%1
替换为%~1
,以消除引号。
然后,我将使用for /f
来截断文件夹名称的第一部分,因此您不需要delayExpansion,并且代码可以处理开头或多或少位数的文件夹名称(并且当然不会重命名已经具有所需名称格式的文件夹。
for /D %%D in ("%~1\*") do (
for /F "tokens=2 delims=_" %%N in ("%%~nD") do (
if not exist "%%~dpD%%~N%%~xD" ren "%%~fD" "%%~N%%~xD"
)
)