所以,我有一堆没有扩展名的文件。 我想写一个Windows批处理脚本,将:
我是这样一个窗口批处理脚本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"