2

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

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

而且,如果可能的话,我想知道如何做相反的事情。我的意思是,将某些字符保留在末尾,从文件名的开头裁剪。

谢谢你。

4

3 回答 3

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 个字符,请尝试:ren "%%~i" "!filename:~-5!%%~xi"

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

于 2012-06-18T04:31:39.287 回答
2

如果任何文件名包含该字符,Iridium 解决方案将失败,因为如果值包含并启用延迟扩展,则扩展失败。这很容易通过在循环中打开和关闭延迟扩展来解决。!%%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
)
于 2012-06-18T11:16:49.227 回答
0

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

于 2012-06-18T04:00:45.653 回答