代码之家  ›  专栏  ›  技术社区  ›  Glenn

查找并重命名没有扩展名的文件?

  •  15
  • Glenn  · 技术社区  · 16 年前

    1. 将.bla添加到文件名的末尾

    我是一个windows批处理脚本的noob,我甚至不知道从哪里开始。建议?

    3 回复  |  直到 8 年前
        1
  •  31
  •   Wadih M.    16 年前

    对于windows批处理文件,这将仅将不带扩展名的文件重命名为.bla扩展名:

    rename *. *.bla
    

    请注意,第一个参数是一个星和一个点:*。

    起始点(*.)组合表示在此上下文中没有扩展名的文件。

    之前:

    06/21/2009  11:57 PM                 6 test
    06/21/2009  11:57 PM                 7 test.exe
    06/21/2009  11:57 PM                 7 test2
    

    之后:

    06/21/2009  11:57 PM                 6 test.bla
    06/21/2009  11:57 PM                 7 test.exe
    06/21/2009  11:57 PM                 7 test2.bla
    

    编辑 :

    对于在子目录之间递归重命名没有扩展名的文件(不支持路径中的空格):

    @echo off
    FOR /F %%i in ('dir /b/s/A-d') DO (
      if "%%~xi" == "" rename "%%~fi" "%%~ni.bla"
    )
    

    对于在子目录之间递归重命名没有扩展名的文件(支持路径中的空格):

    @echo off
    for /f "tokens=* delims= " %%i in ('dir /b/s/A-d') DO (
      if "%%~xi" == "" rename "%%~fi" "%%~ni.bla"
    )
    
        2
  •  6
  •   Helen    16 年前

    下面是另一个可能的命令,用于递归重命名没有扩展名的文件(假设 ):

    for /f %i in ('dir *. /b /s /a-d') do rename "%~fi" "%~ni.bla"
    

    批处理版本(带双精度) %

    @echo off
    for /f %%i in ('dir *. /b /s /a-d') do (
       rename "%%~fi" "%%~ni.bla"
    )
    


    ,请改用此命令:

    for /f "tokens=* delims= " %i in ('dir *. /b /s /a-d') do rename "%~fi" "%~ni.bla"
    

    批处理版本:

    @echo off
    for /f "tokens=* delims= " %%i in ('dir *. /b /s /a-d') do (
       rename "%%~fi" "%%~ni.bla"
    )
    

    编辑: 下面是一条更短的直线,它支持路径中的空间:

    for /r %i in (*.) do ren "%~fi" "%~ni.bla"
    

    @for /r %%i in (*.) do ren "%%~fi" "%%~ni.bla"
    
        3
  •  5
  •   akf    16 年前

    要在子目录中执行此操作,请使用以下命令:

     for /f %a in ('dir /b /ad /s') do rename %a\*. *.bla
    

    如果在批处理文件中使用此选项,则需要将“%”值加倍

     for /f %%a in ('dir /b /ad /s') do rename %%a\*. *.bla
    

     for /f "tokens=* delims= " %%a in ('dir /b /ad /s') do rename "%%a\*." "*.bla"
    
    推荐文章