嘿。我需要你们帮助使用 .bat 文件重命名文件。我有多个文件需要在指定字符号后裁剪。例如,我想在第五个字符之后裁剪文件的名称,这样
filename.exe > filen.exe
anothername.exe > anoth.exe
absolutelydifferentname.exe > absol.exe
而且,如果可能的话,我想知道如何做相反的事情。我的意思是,将某些字符保留在末尾,从文件名的开头裁剪。
谢谢你。
嘿。我需要你们帮助使用 .bat 文件重命名文件。我有多个文件需要在指定字符号后裁剪。例如,我想在第五个字符之后裁剪文件的名称,这样
filename.exe > filen.exe
anothername.exe > anoth.exe
absolutelydifferentname.exe > absol.exe
而且,如果可能的话,我想知道如何做相反的事情。我的意思是,将某些字符保留在末尾,从文件名的开头裁剪。
谢谢你。
如果要在批处理文件中执行此操作,则应执行以下操作:
@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"
如果任何文件名包含该字符,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
)
以防万一这是一次性的,或者其他一些手动场景,看看 CKRename