将文件夹中的所有文件名批量改为大写

8
有没有一种方法可以使用批处理文件将特定文件夹中的所有文件重命名为大写字母?我找到了这段代码,但它将文件重命名为小写字母。如何修改它以改为重命名为大写字母?
for /f "Tokens=*" %f in ('dir /l/b/a-d') do (rename "%f" "%f")
3个回答

14
@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

@rikket - 这些.mov文件的名称中是否包含特殊符号,例如 ! - npocmaka
是的,其中一些使用下划线(_)。 - rikket
当您尝试重命名MOV文件时,会收到哪些错误消息? - foxidrive
如果我想使用它,但不想将扩展名变成大写字母,该怎么办? - cusman
@cusman 在第一个for循环后尝试使用set "filename=%%~nf",并在最后一行使用ren "%%f" "!filename!%%~xf" - npocmaka
显示剩余3条评论

2
这将把文件扩展名也转换为大写字母……对我来说是个问题……所以这就是我如何“保持”扩展名小写的方法…
@echo off
setlocal enableDelayedExpansion

pushd "\...\PATH_TO_FOLDER\"

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
)

for /r "\...\PATH_TO_FOLDER\" %%G in (*.PDF) do ren "%%~G" *.pdf

endlocal

请将 \...\PATH_TO_FOLDER\ 替换为您的路径,.PDF/.pdf 根据需要替换为您的文件扩展名。


4
更简单的方法是:使用set "filename=%%~nf"命令获取文件名(不包括扩展名),然后使用ren "%%f" "!filename!%%~xf" >nul 2>&1命令将文件重命名。无需使用for /r循环。解释:%%~nf表示不带扩展名的文件名,%%~xf表示扩展名。 - Stephan

1
这将把目录中所有文件名转换为大写,而不影响扩展名。
rename 's/^([^.]*)\.(.*)$/\U$1\E.$2/' *

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接