.bat文件重命名文件夹,将每个单词的第一个字母更改为大写 [英] .bat file renaming folders, changing first letter of every word to uppercase

查看:16
本文介绍了.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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆