我想通过将每个目录的首字母大写来重命名某个硬盘驱动器(不是 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,