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

所以,我有一堆没有扩展名的文件。 我想写一个Windows批处理脚本,将:

  1. 查找没有扩展名的文件(在指定的文件夹中)
  2. 将.bla添加到文件名的末尾

我是这样一个窗口批处理脚本noob我什至不知道从哪里开始。 build议?

对于Windows批处理文件,这将只将没有扩展名的文件重命名为.bla扩展名:

rename *. *.bla 

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

第二个参数是:* .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 

附加说明:相反的命令行将所有的.bla文件重命名为没有扩展名的文件。

编辑

对递归重命名跨子目录不扩展的文件(不支持路径中的空格):

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

EDIT2:

对递归重命名跨子目录的文件(支持路径中的空格):

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

下面是另一个可能的命令,用于递归地重命名没有扩展名的文件 (假定文件路径不包含空格 ):

 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" 

在子目录中这样做:

  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"