.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

有人可以帮我吗?

谢谢!

解决方法

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

@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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...