使用.bat重命名文件名?

时间:2012-06-18 03:49:31

标签: batch-file cmd filenames

Heythere。 我需要你们帮助使用.bat文件重命名文件。 我有多个文件需要在指定的字符编号后被裁剪。 例如,我想在第五个字符之后裁剪文件的名称,这样

filename.exe > filen.exe
anothername.exe > anoth.exe
absolutelydifferentname.exe > absol.exe

如果可能的话,我想知道如何做相反的事情。我的意思是,将一定数量的字符留在最后,从文件名的开头裁剪。

谢谢。

3 个答案:

答案 0 :(得分:4)

如果您想在批处理文件中执行此操作,则以下内容应该有效:

@echo off

setlocal ENABLEDELAYEDEXPANSION

for %%i in (<Directory name here>\*) do (
  set filename=%%~ni
  ren "%%~i" "!filename:~0,5!%%~xi"
)

endlocal

如果您想更改用于构建最终文件名的字符数,请更改ren "%%~i" "!filename:~0,5!%%~xi"中的“5”。

要取最后5个字符,请尝试:ren "%%~i" "!filename:~-5!%%~xi"

对于所有之前的前5个字符:ren "%%~i" "!filename:~5!%%~xi"

答案 1 :(得分:2)

如果任何文件名包含!字符,则Iridium solution将失败,因为如果值包含%%i并且启用了延迟扩展,!的扩展将失败。通过在循环内切换延迟扩展来轻松修复此问题。

通常不需要在顶部显式禁用延迟扩展。但是有可能在批处理文件开始时已经启用了延迟扩展,所以我将它包含在内是为了安全。

@echo off
setlocal disableDelayedExpansion
for %%F in ("<Directory name here>\*") do (
  set "full=%%F"
  set "name=%%~nF"
  set "ext=%%~xF"
  setlocal enableDelayedExpansion
  ren "!full!" "!name:~0,5!!ext!"
  endlocal
)

答案 2 :(得分:0)

只是这是一次性的,或者其他一些手动场景,看看 CKRename