我需要将文件夹中的第一个和最后一个文件的名称存储在变量中,因此我需要获取文件的名称并将其存储在数组中。然后根据计数获取数组的第一个和最后一个索引,并将这些名称存储到另一个变量中。这些变量需要作为名称传递给目录。
虽然这不是使用数组,但这是一种只获取第一个和最后一个文件名的简单方法。
这将在C:temp
中查找所有类型为.log
的文件,如果找到一个,它将尝试将其存储在变量%first%
中,前提是其中尚未存储一个文件。对于它找到的每个匹配文件,它都会将其名称存储在变量%last%
中,覆盖该变量中的前一个值,这意味着当它完成列出所有文件时,您将只剩下%last%
中的最后一个文件名。
@echo off
setlocal enabledelayedexpansion
set "folderpath=C:temp"
set "filetype=.txt"
:: Sort order: N=Name-Alphabetic, E=Extention-Alphabetic, S=Size (smallest to largest), D=Date Time (Old to new)
set "sortOrder=D"
for /f %%a in ('dir /O:%sortOrder% /b "%folderpath%*%filetype%"') do (
if not defined first set "first=%%a"
set /a count+=1
set "last=%%a"
)
echo First File:%first%
echo Last File:%last%
echo Count:!count!
endlocal
如果要列出文件夹中的所有文件,而不是仅列出一种类型,则可以将set "filetype=.log"
更改为set "filetype="
这也将只搜索指定的文件夹。要包含所有子目录,请将dir /b
更改为dir /s /b
编辑:修改代码以包括排序顺序选项和计数