首页 > 解决方案 > .bat 文件将每个文件名的前 3 个字母更改为大写 - 仅限 Windows

问题描述

从文件名:1ab12345_def7890.txt1AB12345_def7890.txt。请注意大写的 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

有人可以帮我吗?

谢谢 !

标签: windowsbatch-filecommand-linebatch-rename

解决方案


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

@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

推荐阅读