.bat文件重命名文件夹,将每个单词的第一个字母更改为大写 [英] .bat file renaming folders, changing first letter of every word to uppercase
本文介绍了.bat文件重命名文件夹,将每个单词的第一个字母更改为大写的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
发件人C:xadrenaline_-_shut_the_fug_up_and_dance-2000
至C:xAdrenaline_-_Shut_The_Fug_Up_And_Dance-2000
我有这个代码,但它将每个字母大写
@echo off
setlocal disableDelayedExpansion
echo Renaming folders
for /d %%F in (C:x*) do (
for /f "eol= " %%A in ("%%~nxF") do (
set "name=%%F"
set "newName=%%A"
setlocal enableDelayedExpansion
for %%C 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 "newName=!newName:%%C=%%C!"
ren "!name!" "!newName!"
endlocal
)
)
谢谢!
推荐答案
此修改如何?我认为这可能会写得更简单。因此,请将此视为以下几个答案之一。
修改点:
- 从文件名中检索首字母,并将其转换为大写。
- 对于文件名中的每个首字母,使用
_
检索该字母。后面的字母_
转换为大写。 - 将转换后的字母添加到删除了首字母的文件名中。
- 如果有相同的文件名,则不会重命名。
反映上述几点的修改后的脚本如下。
修改后的脚本:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
ECHO Renaming folders
SET "DIR=C:x"
FOR /D %%F IN (%DIR%*) DO (
SET "BASENAME=%%~NXF"
SET "NAME=%%~NXF"
SET "F=TRUE"
SET "NEWNAME="
CALL :CONVERT
)
EXIT /B
:CONVERT
SET "L=!NAME:~0,1!"
IF %F% == TRUE (
SET "INITIAL=!L!"
FOR %%I 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 INITIAL=!INITIAL:%%I=%%I!
SET NEWNAME=!NEWNAME!!INITIAL!
) ELSE (
SET NEWNAME=!NEWNAME!!L!
)
IF !L! == _ (
SET "F=TRUE"
) ELSE (
SET "F=FALSE"
)
SET "NAME=!NAME:~1!"
IF DEFINED NAME GOTO CONVERT
IF NOT %DIR%!BASENAME! == %DIR%!NEWNAME! REN "%DIR%!BASENAME!" "!NEWNAME!"
EXIT /B
注意:
- 使用时,请根据您的环境修改
SET "DIR=C:x"
。 - 请注意
_
文件名,因为用于转换为大写字母的字母是使用_
检索的。
如果我误解了您的问题,很抱歉。
这篇关于.bat文件重命名文件夹,将每个单词的第一个字母更改为大写的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文