我的函数需要来自特定目录的第一个文件名来处理使用第一个文件的一些测试,在完成测试时从目录中删除第一个文件
我试过如下
FOR /R \\<My Folder> %F in (*.zip*) do echo ~nF >%test_list%
set /p firstline=%test_list%
echo %firstline%
FOR /F "tokens=*" %%A IN ('dir %test_firmware_dir% /b/s ^| find /c ".zip"') DO SET
count=%%A
echo %count%
:test_execution
if %count% NEQ 0 (
echo ON
dir /b %test_firmware_dir%\*.zip >%test_firmware_list%
set /p firstline=<%test_firmware_list%
set /a filename=%firstline:~0,-4%
Echo %filename%
Echo *********************************************************
Echo "Now running batch queue tests with %filename%"
Echo ********************************************************
它显示了获取第一个元素的任何过程的最后一个元素??
答案 0 :(得分:20)
另一种方法是在获得第一个文件后使用goto
(中断FOR循环):
FOR %%F IN (%test_firmware_dir%\*.zip) DO (
set filename=%%F
goto tests
)
:tests
echo "%filename%"
在某些情况下,它可以更快地运行(一点点),因为它不必遍历整个目录。
答案 1 :(得分:8)
假设你是按字母顺序排序的第一个文件;然后,如果您遍历列表覆盖最后一个值,则表示捕获最后一个文件,而是控制排序顺序;
for /f "delims=" %%F in ('dir %test_firmware_dir%\*.zip /b /o-n') do set file=%%F
echo 1st alpha file is %file%