获取批处理文件中变量中目录的第N个文件名?

时间:2018-01-22 01:17:22

标签: batch-file

我试图将目录的第N个文件名读入变量。

for %%f in (%directory%\*.bmp) do set filename=%%~nf

将提供最后一个文件名。

是否可以使用计数器来获取目录中的第三个文件名?

1 个答案:

答案 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 .强制errorlevel0。然后尝试将1除以计数,如果count0,则会失败。抑制错误消息。

如果errorlevel为1或更大,则除法失败,因此检测到所需的文件名。如果它很好 - 我只是报告了没有指标的文件。

当然,如果您需要,可以set filename=%a&goto done :done for循环之外的标签。