Find and rename files with no extension?

后端 未结 3 855
感动是毒
感动是毒 2020-12-14 02:45

So, I\'ve got a bunch of files with no extension. I want to write a windows batch script that will:

  1. Find files with no extension (in a specified folder)
相关标签:
3条回答
  • 2020-12-14 03:20

    to do this in subdirectories use this:

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

    if you are using this in a batch file, you need to double the '%'

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

    edit:

    and if you have spaces in your directory names, you can try this (batch version):

     for /f "tokens=* delims= " %%a in ('dir /b /ad /s') do rename "%%a\*." "*.bla"
    
    0 讨论(0)
  • 2020-12-14 03:24

    For windows batch files, this will rename only files with no extension to the .bla extension:

    rename *. *.bla
    

    Notice the first argument is a star and a dot: *.

    The second argument is: *.bla

    The start dot (*.) combination represents files with no extensions in this context.

    Before:

    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
    

    After:

    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
    

    Additional note: The opposite commandline would rename all .bla files into no extension files.

    EDIT:

    For recursively renaming files with no extension across subdirectories (doesn't support spaces in paths):

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

    EDIT2:

    For recursively renaming files with no extension across subdirectories (supports spaces in path):

    @echo off
    for /f "tokens=* delims= " %%i in ('dir /b/s/A-d') DO (
      if "%%~xi" == "" rename "%%~fi" "%%~ni.bla"
    )
    
    0 讨论(0)
  • 2020-12-14 03:41

    Here's another possible command for renaming files with no extensions recursively (assuming that file paths don't contain spaces):

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

    Batch version (with doubled %):

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


    If file or folder names contain spaces, use this command instead:

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

    Batch version:

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

    Edit: here's even shorter one-liner that supports spaces in paths:

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

    Batch version:

    @for /r %%i in (*.) do ren "%%~fi" "%%~ni.bla"
    
    0 讨论(0)
提交回复
热议问题