我试图将目录的第N个文件名读入变量。
for %%f in (%directory%\*.bmp) do set filename=%%~nf
将提供最后一个文件名。
是否可以使用计数器来获取目录中的第三个文件名?
答案 0 :(得分:1)
for /f "tokens=1*delims=:" %%f in ('dir /b /a-d "%directory%\*.bmp"^|findstr /n /r "."') do if %%f==%num% set filename=%%~ng
以基本形式执行没有目录名的目录列表。用前面的num:
为每一行编号。将:
标记为%%f
=行号,%%g
=文件名。在%num%
中选择文件编号。
@ECHO Off
SETLOCAL
cls
SET /a count=3
FOR %%a IN (*.bmp) DO (
SET /a count-=1
CD .
SET /a $=1/count >NUL 2>NUL
IF ERRORLEVEL 1 (echo ---%%a) ELSE (ECHO %%a)
)
GOTO :eof
这可能更快。适应原则以适应。
%%a
依次获取每个名称,并且计数器递减。 cd .
强制errorlevel
到0
。然后尝试将1除以计数,如果count
为0
,则会失败。抑制错误消息。
如果errorlevel
为1或更大,则除法失败,因此检测到所需的文件名。如果它很好 - 我只是报告了没有指标的文件。
当然,如果您需要,可以set filename=%a&goto done
:done
for
循环之外的标签。