只需使用.bat更改后缀即可

时间:2012-03-04 23:58:11

标签: batch-file cmd filenames

我只需要使用.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

1 个答案:

答案 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
)