如何批量获取上次修改文件的前一个(第n个)

时间:2015-02-25 05:42:03

标签: windows batch-file dos command-prompt

在一个文件夹中说我有5个文件A B C D E.我需要找到最后修改的是D和前一个C或者可能是第n个。怎么做?

我上次修改了:http://blogs.msdn.com/b/oldnewthing/archive/2012/08/01/10334557.aspx

但不是更通用的第n个。

2 个答案:

答案 0 :(得分:2)

@echo off

set "root_dir=c:\somewhere"
pushd "%root_dir%"
set "bl1="
set "bl2="

setlocal enableDelayedExpansion
for /f "tokens=* delims=" %%# in ('dir /b /a:-d /o:d') do (
    set "bl2=!bl1!"
    set "bl1=%%#"
)

echo %bl2%

endlocal

答案 1 :(得分:0)

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET /a skiplength=%1
IF %skiplength%==0 (SET "skiplength=") ELSE (SET "skiplength=skip=%skiplength%")
FOR /f "%skiplength%delims=" %%a IN (
  'dir /b /a-d /o-d "%sourcedir%\*" '
  ) DO ECHO %%a&GOTO done
:done


GOTO :EOF

提供的第一个参数是第n个参数(0 =最小,1 =第二个最新)等。

它只是将skiplength构建为 nothing skip=$required,具体取决于输入的数字,然后执行目录列表,不包括目录名(/ ad)和反向日期顺序(/ OD);跳过所需的条目数,产生一行输出和jum out of the loop。

sourcedir的选择取决于您。当然,如果您愿意,可以将%%a分配给变量。