【问题标题】:.bat file changing first 3 letter of every filename to uppercase - Windows only.bat 文件将每个文件名的前 3 个字母更改为大写 - 仅限 Windows
【发布时间】:2020-09-10 10:12:16
【问题描述】:
来自文件名:1ab12345_def7890.txt
到1AB12345_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