用于从目录获取第一个文件名的批处理脚本

时间:2012-08-09 12:01:03

标签: batch-file

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

我试过如下

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 个答案:

答案 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%