Find and rename files with no extension? Find and rename files with no extension? windows windows

Find and rename files with no extension?


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 test06/21/2009  11:57 PM                 7 test.exe06/21/2009  11:57 PM                 7 test2

After:

06/21/2009  11:57 PM                 6 test.bla06/21/2009  11:57 PM                 7 test.exe06/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 offFOR /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 offfor /f "tokens=* delims= " %%i in ('dir /b/s/A-d') DO (  if "%%~xi" == "" rename "%%~fi" "%%~ni.bla")


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 offfor /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 offfor /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"


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"