【问题标题】:Rename all files in folder to uppercase with batch使用批处理将文件夹中的所有文件重命名为大写
【发布时间】:2014-08-08 08:27:43
【问题描述】:

有没有办法用批处理文件将特定文件夹中的所有文件重命名为大写?
我找到了这段代码。但它将文件重命名为小写。如何修改它以重命名为大写?

for /f "Tokens=*" %f in ('dir /l/b/a-d') do (rename "%f" "%f")

【问题讨论】:

    标签: file batch-file file-management


    【解决方案1】:
    @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
    

    【讨论】:

    • 它不适用于 mov 文件,有什么想法@npocmaka?
    • @rikket - 它适用于 windows 服务器。mov 文件是只读的吗?
    • @rikket - 这些 .mov 文件的名称行中是否包含特殊符号 !
    • 是的,其中一些,带有下划线 (_)
    • @rikket - 下划线应该不是问题。而是在文件权限中......
    【解决方案2】:

    这会将目录中的所有文件名转换为大写而不影响扩展名。

    rename 's/^([^.]*)\.(.*)$/\U$1\E.$2/' *
    

    【讨论】:

      【解决方案3】:

      这也会将扩展名设为大写......这对我来说是个问题......所以这就是我如何将扩展名“保持”为小写......

      @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 替换为您的文件扩展名。

      【讨论】:

      • 更简单:set "filename=%%~nf" 和更高版本的ren "%%f" "!filename!%%~xf" >nul 2>&1。不需要您的 for /r 循环。说明_%%~nf 给出的名称不带扩展名,%%~xf 只是扩展名。
      猜你喜欢
      • 2011-03-02
      • 2016-03-26
      • 2011-12-26
      • 2013-04-22
      • 1970-01-01
      • 2011-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多