我的文件夹中有多个子文件夹中的文件名为file.txt。我想获得最新的file.txt
的路径FOR /r %%i IN ('DIR file.txt /B /O:-D') DO SET a=%%i
echo Most recent subfolder: %a%
给出了最新创建的文件夹,其中包含file.txt,而我想要的文件夹包含最新的file.txt
答案 0 :(得分:2)
@echo off
setlocal enableextensions disabledelayedexpansion
for /f "tokens=1,2,*" %%a in ('
robocopy . . file.txt /l /nocopy /is /s /nc /ns /ts /ndl /njh /njs
^| sort /r 2^> nul
^| cmd /v /q /c "set /p .=&echo(^!.^!"
') do (
echo File found : %%c
echo File timestamp (UTC^) : %%a %%b
echo Folder of file : %%~dpc
)
这将使用robocopy
命令枚举当前活动目录下的所有file.txt
文件,而不复制任何内容,只生成具有yyyy/mm/dd hh:nn:ss
utc时间戳的所有匹配文件的列表。然后列表按时间戳按降序排序,只有输出中的第一行被重新加入并回显以由for /f
标记生成器处理,并以完整路径检索日期,时间和文件。
如果只需要文件夹且文件列表不是很大,则简化版本可以是
@echo off
setlocal enableextensions disabledelayedexpansion
for /f "tokens=1,2,*" %%a in ('
robocopy . . file.txt /l /nocopy /is /s /nc /ns /ts /ndl /njh /njs
^| sort /r
') do set "lastFolder=%%~dpc" & goto :done
:done
echo Last folder : %lastFolder%
几乎相同,但不是在列表生成中包含过滤器而只检索第一行(如果文件列表非常大则需要),这里for /f
将检索完整列表但是在处理完第一个元素后,我们跳出循环到指定的标签。