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

Gle*_*enn 16 windows scripting rename batch-file

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

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

我是一个Windows批处理脚本菜鸟我甚至不知道从哪里开始.建议?

Wad*_* M. 29

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

rename *. *.bla
Run Code Online (Sandbox Code Playgroud)

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

第二个参数是:*.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
Run Code Online (Sandbox Code Playgroud)

后:

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
Run Code Online (Sandbox Code Playgroud)

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

编辑:

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

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

EDIT2:

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

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


Hel*_*len 6

这是另一个可能的命令,用于重命名没有扩展名的文件(假设文件路径不包含空格):

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

批量版本(加倍%):

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


如果文件或文件夹名称包含空格,请改用以下命令:

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

批量版本:

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

编辑:这里是更短的单行,支持路径中的空格:

for /r %i in (*.) do ren "%~fi" "%~ni.bla"
Run Code Online (Sandbox Code Playgroud)

批量版本:

@for /r %%i in (*.) do ren "%%~fi" "%%~ni.bla"
Run Code Online (Sandbox Code Playgroud)


akf*_*akf 5

在子目录中执行此操作使用此:

 for /f %a in ('dir /b /ad /s') do rename %a\*. *.bla
Run Code Online (Sandbox Code Playgroud)

如果您在批处理文件中使用它,则需要将'%'加倍

 for /f %%a in ('dir /b /ad /s') do rename %%a\*. *.bla
Run Code Online (Sandbox Code Playgroud)

编辑:

如果你的目录名中有空格,你可以尝试这个(批量版本):

 for /f "tokens=* delims= " %%a in ('dir /b /ad /s') do rename "%%a\*." "*.bla"
Run Code Online (Sandbox Code Playgroud)