批量查找文件扩展名
时间:2020-03-06 14:46:41 来源:igfitidea点击:
如果我使用以下方法遍历每个文件:
@echo off FOR %%f IN (*\*.\**) DO ( echo %%f )
如何打印每个文件的扩展名?我尝试将%% f分配给一个临时变量,然后使用代码:echo"%t:〜-3%"
进行打印,但没有成功。
解决方案
FOR命令具有多个内置开关,可用于修改文件名。请尝试以下方法:
@echo off for %%i in (*.*) do echo "%%~xi"
有关更多详细信息,请使用"帮助"以获取修饰符的完整列表,其中有很多!
尽管不是很快就可以做到这一点:
@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
Sam的答案绝对是我们想要的最简单的答案。但我想补充一点:
不要在for
的()
内设置变量,除非立即发布,否则不要马上使用它
setlocal ENABLEDELAYEDEXPANSION
并且我们使用!
而不是%来包装变量名。例如,
@echo off setlocal ENABLEDELAYEDEXPANSION FOR %%f IN (*.*) DO ( set t=%%f echo !t:~-3! )
退房
set /?
有关更多信息。
另一种选择是调用一个子例程来执行"设置",如Pax所示。