批量查找多个最新文件夹

问题描述 投票:0回答:2

大家好,我是批处理脚本新手,有一个问题 我有一个脚本来查找给定路径中创建的最新文件夹

@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 个最新的文件夹,但我不知道该怎么做。 谢谢你的帮助

batch-file
2个回答
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
值即可。


0
投票

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

@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 /?
© www.soinside.com 2019 - 2024. All rights reserved.