Heythere。 我需要你们帮助使用.bat文件重命名文件。 我有多个文件需要在指定的字符编号后被裁剪。 例如,我想在第五个字符之后裁剪文件的名称,这样
filename.exe > filen.exe
anothername.exe > anoth.exe
absolutelydifferentname.exe > absol.exe
如果可能的话,我想知道如何做相反的事情。我的意思是,将一定数量的字符留在最后,从文件名的开头裁剪。
谢谢。
答案 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