14

我的函数需要来自特定目录的第一个文件名来使用第一个文件处理一些测试,在完成测试时从目录中删除第一个文件

我尝试如下

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 ********************************************************

它显示最后一个元素任何程序来获得第一个元素??

4

2 回答 2

32

goto另一种方法是在您拥有第一个文件后使用(中断 FOR 循环):

FOR %%F IN (%test_firmware_dir%\*.zip) DO (
 set filename=%%F
 goto tests
)
:tests
echo "%filename%"

在某些情况下它可以运行得更快(一点点),因为它不必遍历整个目录。

于 2012-08-12T16:29:27.850 回答
10

假设您指的是按字母顺序排序的第一个文件;然后假设您遍历列表覆盖最后一个值,您将如您所说捕获最后一个文件,而不是控制排序顺序;

for /f "delims=" %%F in ('dir %test_firmware_dir%\*.zip /b /o-n') do set file=%%F
echo 1st alpha file is %file%
于 2012-08-09T12:36:36.767 回答