批处理脚本:从目录中获取第一个文件名

17

我的函数需要处理特定目录中的第一个文件以执行一些测试,并在完成测试后从该目录中删除第一个文件。

我尝试了以下方法:

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

它正在显示最后一个元素,有没有方法获取第一个元素?

2个回答

35

另一种方法是在获取第一个文件后使用goto(跳出FOR循环):

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

在某些情况下,它可能会运行得更快(有点), 因为它不需要遍历整个目录。


11

假设您是指按字母顺序排列的第一个文件;那么,考虑到您在遍历列表并覆盖最后一个值时,您将会捕获到最后一个文件,而不是这样,应该控制排序顺序。

for /f "delims=" %%F in ('dir %test_firmware_dir%\*.zip /b /o-n') do set file=%%F
echo 1st alpha file is %file%

请注意,这将给您dir返回的最后一个文件名。请适当排序。 - Ben

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接