我只需要使用.bat重命名文件序列,例如######。avi到### two.avi 所以我需要在扩展之前删除3个最后一个符号并将它们更改为“两个”。我找到了一个改变前缀的解决方案,
@echo off
for %%i in (*.avi) do (set fname=%%i) & call :rename
goto :eof
:rename
ren %fname% two%fname:~3%
goto :eof
但后缀没有任何内容。 提前谢谢。
的 UPD。 的 Thanx男人!这是解决方案。我可以用+1代表引导你,但我不能。 (不需要15个代表) 另外,为了不写这么多,可以用较短的文字来完成:
@echo off
for %%i in (*.avi) do (set fname=%%i) & call :rename
:renameFile
ren %fname% %fname:~0,3%two.avi
答案 0 :(得分:2)
你很接近,你只需要~n扩展修饰符来获得没有扩展名的基本名称。它适用于FOR变量和CALL参数。我会更改你的名称:重命名例程,以便它不会与RENAME命令混淆。)
@echo off
for %%i in (*.avi) do (set fname=%%~ni) & call :renameFile
goto :eof
:renameFile
ren "%fname%.avi" "%fname:~0,-3%two.avi"
goto :eof
如果激活延迟扩展,则不需要子例程。我在循环中切换延迟扩展,以便在分配fname期间没有损坏!
的文件名。
@echo off
for %%i in (*.avi) do (
set fname=%%~ni
setlocal enableDelayedExpansion
ren "!fname!.avi" "!fname:~0,-3!two.avi"
endlocal
)