Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 在目录中查找最新文件_Batch File - Fatal编程技术网

Batch file 在目录中查找最新文件

Batch file 在目录中查找最新文件,batch-file,Batch File,我是批处理编程的新手,但在这里找到了一些很棒的脚本,我尝试过修改它们。我需要在目录中修改最后一个文件的信息。下面的脚本为我提供了一个文件,其中包含有关文件名和修改时间的信息。它也在子目录中搜索,但似乎卡在子目录中,而不是在父目录中查找较新的文件。我不确定会出什么问题(因为我只理解部分代码)。你们这些聪明人有什么建议吗 提前谢谢 @echo off setlocal set srcDir=C:\Test set lastmod= pushd "%srcDir%" for /f "toke

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

提前谢谢

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

这将使用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

您想在子目录中搜索吗?谢谢您的回复!是的,它还应该包括子目录。我试着填写目录,但没能让它工作。我收到的错误消息是“排序:打开失败:/r:没有这样的文件或目录”。我应该在某个地方填写目录还是/r开关错误?@user3297825,它包括子目录(请参阅robocopy的
/s
开关)。Sort命令未读取任何文件。它所要做的是以相反的顺序读取和排序(通过
/r
开关)通过管道从robocopy提交的数据(
^
)。按原样,它适用于当前目录和以下目录。+1真是太棒了。Robocopy在此过程中使用
UTC时间
,并
为您排序日期
。一棵整棵树都可以被处理,这一事实使得它可能非常有用。