首页 > 解决方案 > 获取最后修改的文件

问题描述

我正在做一个批处理文件,我想将最后一个文件复制到目录中。在这种情况下,一个.cmd总是生成一个新文件的文件。

我做的第一个尝试是使用这个/T:W东西,它工作得很好;当文件名使用两个(或更多)数字时,就会出现问题。

for /f %%x in ('dir C:\foldercmd\*.cmd /B /T:W ') do set "cmdFile=%%x"

所以我得到的输出是:

C:\Users\foldercmd>set "cmdFile=cmdWork_1.cmd"
C:\Users\foldercmd>set "cmdFile=cmdWork_10.cmd"
C:\Users\foldercmd>set "cmdFile=cmdWork_11.cmd"
C:\Users\foldercmd>set "cmdFile=cmdWork_12.cmd"
C:\Users\foldercmd>set "cmdFile=cmdWork_2.cmd"
C:\Users\foldercmd>set "cmdFile=cmdWork_3.cmd"
C:\Users\foldercmd>set "cmdFile=cmdWork_4.cmd"
C:\Users\foldercmd>set "cmdFile=cmdWork_5.cmd"
C:\Users\foldercmd>set "cmdFile=cmdWork_6.cmd"
C:\Users\foldercmd>set "cmdFile=cmdWork_7.cmd"
C:\Users\foldercmd>set "cmdFile=cmdWork_8.cmd"
C:\Users\foldercmd>set "cmdFile=cmdWork_9.cmd"

我想得到:

C:\Users\foldercmd>set "cmdFile=cmdWork_1.cmd"
C:\Users\foldercmd>set "cmdFile=cmdWork_2.cmd"
C:\Users\foldercmd>set "cmdFile=cmdWork_3.cmd"
[...]
C:\Users\foldercmd>set "cmdFile=cmdWork_11.cmd"
C:\Users\foldercmd>set "cmdFile=cmdWork_12.cmd"

标签: batch-file

解决方案


我将纯粹通过标题来回答这个问题。获取最后修改的文件

@echo off
for /f "delims=" %%i in ('dir "C:\foldercmd\*.cmd" /b /a-d /o-d') do set "cmdfile=%%i" & goto :end
:end
echo %cmdfile%

这将按顺序对文件*.cmd进行排序,首先是最新文件,然后仅将第一个文件设置为最新文件并回显它。将新.cmd文件添加到该目录后,它将选择新文件..就这么简单。


推荐阅读