从文件夹和子文件夹中的文件中删除最旧的文件

时间:2017-03-28 12:39:35

标签: batch-file cmd

setlocal
set Folder=C:\test\
set FileMask=*.*
set OldestFile=

for /f "delims=" %%a in ('dir /b /o:d "%Folder%\%FileMask%" 2^>NUL') do (
    set OldestFile=%%a
    goto Break
)
:Break

if "%OldestFile%"=="" (
    echo No files found in '%Folder%' matching '%FileMask%'!
) else (
    echo del "%Folder%\%OldestFile%"
)

pause

这里我删除了最旧的文件(文件夹中的文件或文件夹中的目录)。如何从文件夹和子文件夹中的文件中删除最旧的文件?必须检查子文件夹。

1 个答案:

答案 0 :(得分:0)

@echo off
    setlocal enableextensions disabledelayedexpansion

    set "folder=C:\test\"
    set "fileMask=*.*"

    set "oldestFile="
    for %%f in ("%folder%\.") do for /f "tokens=2,*" %%a in ('
        robocopy "%%~ff" "%%~ff" %fileMask% /njh /njs /nc /ns /l /is /ndl /ts /s
        ^| 2^>nul sort 
        ^| find ":"
    ') do set "oldestFile=%%b" & goto :done

    :done
    echo "%oldestFile%"

这使用robocopy列出/l具有yyyy/mm/dd hh:nn:ss格式的时间戳的文件,对列表进行排序,使得最旧的文件是第一个,并且一旦第一个文件的信息被记录检索,显示它。