查找目录中的最新文件

时间:2014-02-11 15:39:48

标签: batch-file

我是批处理编程的新手,但是我在这里找到了一些我尝试修改的优秀脚本。我需要在目录中修改的最后一个文件的信息。下面的脚本给我一个文件,其中包含有关文件名和修改时间的信息。它也搜索子目录,但似乎卡在子目录中而不是在父目录中找到较新的文件。我不确定会出现什么问题(因为我只是部分理解代码)。你们聪明人在这里有什么建议吗?

提前致谢!

@echo off

setlocal

set srcDir=C:\Test

set lastmod=

pushd "%srcDir%"

for /f "tokens=*" %%a in ('dir *. * /b /od /s /a-d 2^>NUL') do set lastmod=%%a

if "%lastmod%"=="" echo Could not locate files.&goto :eof

for /d %%a in ("%lastmod%") do echo "%lastmod%", Modified date: %%~ta>"C:\Test\Details.txt"

1 个答案:

答案 0 :(得分:1)

这使用了robocopy,所以它只适用于Windows Vista及更高版本。要使其在XP上运行,您需要从以后的操作系统或资源工具包中获取robocopy的副本。

不会真正进行复制操作,但它将允许检索具有足够文件标记的递归文件列表,该文件标记可以排序以查找最新文件。

@echo off
    setlocal enableextensions disabledelayedexpansion

    set "folder=%cd%"

    for /f "tokens=2,*" %%a in (
        'robocopy "%folder%" "%folder%" "*" /s /is /nocopy /nc /ns /ts /fp /np /ndl /njh /njs /xjd /r:0 /w:0 /l ^| sort /r '
    ) do ( set "latest=%%b" & goto :done )
    :done

    for %%f in ("%latest%") do echo(%%~tf %%~ff