大家好,我是批处理脚本新手,有一个问题 我有一个脚本来查找给定路径中创建的最新文件夹
@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 个最新的文件夹,但我不知道该怎么做。 谢谢你的帮助
这里有一段代码可以实现这个目的。它迭代
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
值即可。
这是一个示例,它首先将四个最新的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 /?