批量查找文件扩展名

Vha*_*run 18 windows dos batch-file

如果我使用以下方法迭代每个文件:

@echo off

FOR %%f IN (*\*.\**) DO (
    echo %%f
)
Run Code Online (Sandbox Code Playgroud)

我怎么能打印每个文件的扩展名?我尝试将%% f分配给临时变量,然后使用代码:echo "%t:~-3%"打印但没有成功.

Sam*_*way 34

FOR命令有几个内置开关,允许您修改文件名.请尝试以下方法:

@echo off
for %%i in (*.*) do echo "%%~xi"
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请使用help for以获取修改器的完整列表 - 有很多!


pax*_*blo 6

这有效,虽然它不是非常快速:

@echo off
for %%f in (*.*) do call :procfile %%f
goto :eof

:procfile
    set fname=%1
    set ename=
:loop1
    if "%fname%"=="" (
        set ename=
        goto :exit1
    )
    if not "%fname:~-1%"=="." (
        set ename=%fname:~-1%%ename%
        set fname=%fname:~0,-1%
        goto :loop1
    )
:exit1
    echo.%ename%
    goto :eof
Run Code Online (Sandbox Code Playgroud)