2015-02-25 3 views
1

Скажите в папке, у меня есть 5 файлов A B C D E. Мне нужно найти последний измененный, который является D и предыдущим C или может быть n-ым предыдущим. Как это сделать?Как получить предыдущий (n-й) последний измененный файл в партии

я Последнее изменение: http://blogs.msdn.com/b/oldnewthing/archive/2012/08/01/10334557.aspx

но не п-я один, который является более общим.

ответ

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 
+3

Хотя этот блок кода может ответить на вопрос, вы всегда должны дать некоторое объяснение, почему оно это делает. –

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 = leatest, 1 = второй последней) и т.д.

Он просто строит skiplength, как ничего или skip=$required в зависимости от введенный номер выполняет список каталогов, исключая имена каталогов (/ ad) и в порядке обратного дат (/ od); пропускает необходимое количество записей, выдает одну линию вывода и выходы из цикла.

Выбор sourcedir зависит от вас. Естественно, вы могли бы назначить %%a переменной, если хотите.

Смежные вопросы