.bat文件将每个文件名的前3个字母更改为大写-仅限Windows



来自文件名:1ab12345_def7890.txt至CCD_ 2。请用大写字母填写通知1AB。

我尝试了以下操作,但它将整个文件名重命名为大写,包括扩展名。

@echo off
setlocal enableDelayedExpansion
pushd c:some_dir
for %%f in (*) do (
set "filename=%%~f"
for %%A in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
set "filename=!filename:%%A=%%A!"
)
ren "%%f" "!filename!" >nul 2>&1
)
endlocal

有人能帮我吗?

谢谢!

您只需要首先隔离文件名的前三个字符,执行替换,然后将其放回字符串中。

@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
PushD "C:some_dir" 2> NUL || GoTo :EOF
For %%G In (*) Do (Set "filename=%%~nG"
SetLocal EnableDelayedExpansion
Set "leading=!filename:~,3!"
For %%H In (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
) Do Set "leading=!leading:%%H=%%H!"
Ren "%%G" "!leading!!filename:~3!%%~xG" 1> NUL
EndLocal)
PopD

最新更新