2017-03-28 24 views
0
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 

ここでは、最も古いファイル(フォルダ内のファイルまたはフォルダ内のディレクトリ)を削除します。フォルダとサブフォルダ内のファイルから最も古いファイルを削除するにはどうすればよいですか?サブフォルダを確認する必要があります。フォルダとサブフォルダ内のファイルから最も古いファイルを削除する

+0

一見すると、dir/odはフォルダごとにファイルを並べ替えるので、これはバッチではかなり難しいでしょう。しかし、このリンクは、サブフォルダを並べ替える方法を教えてくれます。あなたのニーズにそれを適応させるのは簡単なはずです – Stephan

答えて

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%" 

これは、yyyy/mm/dd hh:nn:ss形式のタイムスタンプ付き/lファイルをリスト最も古いファイルが最初のと最初のファイルの情報が取得された後であるので、リストをソートし、それを表示するためにrobocopyを使用しています。

関連する問題