【问题标题】:.bat file changing first 3 letter of every filename to uppercase - Windows only.bat 文件将每个文件名的前 3 个字母更改为大写 - 仅限 Windows
【发布时间】:2020-09-10 10:12:16
【问题描述】:

来自文件名: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

有人可以帮我解决这个问题吗?

谢谢!

【问题讨论】:

    标签: windows batch-file command-line batch-rename


    【解决方案1】:

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

    @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
    

    【讨论】:

      猜你喜欢
      • 2021-08-05
      • 2012-04-17
      • 2014-01-02
      • 1970-01-01
      • 2016-11-24
      • 1970-01-01
      • 2012-01-09
      • 2013-06-22
      • 1970-01-01
      相关资源
      最近更新 更多