批量大写所有文件夹,子文件夹和文件

批量大写所有文件夹,子文件夹和文件

我想通过将每个目录的首字母大写来重命名某个硬盘驱动器(不是 C:)上的所有目录(因此:\images-> \Images)。不幸的是,我没有足够的经验从头开始编写这个。

答案1

以下本机批处理脚本将重命名驱动器 X: 中的所有目录,忽略只读、隐藏和系统目录并忽略重新解析点。它将名称转换为小写,然后将目录名称的首字符大写(英文字符)。它不处理名称中的 unicode。

@echo off
setlocal disableDelayedExpansion
set "drive=x"
set "tempFile=%temp%\initUpper%random%.txt"
dir /s /b /l /ad-l-h-s-r %drive%:\* >"%tempFile%"
for /f "usebackq eol=: delims=" %%F in ("%tempFile%") do (
  set "old=%%F"
  set "new=%%~nxF"
  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 if /i "!new:~0,1!" equ "%%C" set "new=%%C!new:~1!"
  ren "!old!" "!new!" 2>nul || echo unable to rename !old!
  endlocal
)
del "%tempFile%"

出于性能原因,该脚本使用临时文件。可以对其进行修改,让 FOR /F 直接读取 DIR 命令的输出。但是输出可能非常大,如果命令结果集非常大,FOR /F 就会变得非常慢。

可以对 DIR 命令进行许多调整。例如:

删除/ad重命名文件和目录的选项:dir /s /b /l /a-l-h-s-r

删除/a-h-s包含隐藏文件夹和系统文件夹的选项:dir /s /b /l /ad-l-r

删除/l保留除首字母之外的所有字符大小写的选项:dir /s /b /ad-l-h-s-r

答案2

正如 Martheen Cahya Paulo 在评论中提到的那样,这个问题已经得到解答了,尽管是间接的。

你可以使用一个很棒的工具,太空龙卷风重命名器,如此处发布:https://superuser.com/a/65304/125301

相关内容