批量查找多个最新文件夹

时间:2016-07-28 15:45:18

标签: batch-file

嘿伙计们批量编写脚本并且有一个问题 我有一个脚本来查找在给定路径中创建的最新文件夹

@echo off
FOR /F "delims=" %%i IN ('dir /b /ad-h /t:c /o-d') DO (
    SET a=%%i
    GOTO :found
)
echo No subfolder found
goto :eof
:found



set audioid=%a% 

echo Most recent subfolder: %audioid%
pause

我现在想找到4个最新的文件夹,我不知道如何去做。 谢谢你的帮助

2 个答案:

答案 0 :(得分:1)

这是一段可以解决问题的代码。它遍历dir命令返回的最新文件夹(每行返回一行),遇到第4个文件后停止(如果有超过4个文件夹)。

@echo off
setlocal enableextensions, enabledelayedexpansion
set /a _IDX=0
set /a _MAX_ENTRIES=4

FOR /F "delims=" %%i IN ('dir /b /ad-h /t:c /o-d') DO (
    echo Most recent subfolder: %%i
    set /A _IDX=!_IDX! + 1
    if !_IDX! geq !_MAX_ENTRIES! (
        goto :eof
    )
)

如果您想要不同数量的最新文件夹,只需更改_MAX_ENTRIES值。

答案 1 :(得分:0)

这是一个示例,首先将4个最新的创建的子文件夹的名称分配给环境变量,然后输出它们。

@echo off
setlocal EnableExtensions EnableDelayedExpansion
set "FolderIndex=0"

for /F "delims=" %%I in ('dir /AD-H /B /O-D /T:C 2^>nul') do (
    set /A FolderIndex+=1
    set "NewestFolder#!FolderIndex!=%%I"
    if !FolderIndex! == 4 goto FoundFolders
)

if not %FolderIndex% == 0 goto FoundFolders
echo No subfolder found.
goto EndBatch

:FoundFolders
set NewestFolder#

:EndBatch
endlocal
pause

要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。

  • dir /?
  • echo /?
  • endlocal /?
  • for /?
  • if /?
  • pause /?
  • set /?
  • setlocal /?