Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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
Windows 如何批量获取上次修改文件的上一个(第n个)_Windows_Batch File_Dos_Command Prompt - Fatal编程技术网

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

Windows 如何批量获取上次修改文件的上一个(第n个),windows,batch-file,dos,command-prompt,Windows,Batch File,Dos,Command Prompt,假设在一个文件夹中,我有5个文件a B C D E。我需要找到最后修改的文件,它是D和上一个文件C,或者可能是上一个文件N。怎么做 我最后一次修改: 但不是第n个更通用的。@ECHO OFF @echo off set "root_dir=c:\somewhere" pushd "%root_dir%" set "bl1=" set "bl2=" setlocal enableDelayedExpansion for /f "tokens=* delims=" %%# in ('dir /b

假设在一个文件夹中,我有5个文件a B C D E。我需要找到最后修改的文件,它是D和上一个文件C,或者可能是上一个文件N。怎么做

我最后一次修改:

但不是第n个更通用的。

@ECHO OFF
@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
SETLOCAL 设置“sourcedir=U:\sourcedir” 设置/a跳过长度=%1 如果%skiplength%==0(设置“skiplength=”)否则(设置“skiplength=skip=%skiplength%”) 对于/f“%skiplength%delims=“%%a IN( 'dir/b/a-d/o-d”%sourcedir%\*“' )完成回声%%a&转到完成 :完成 后藤:EOF
其中,提供的第一个参数是第n个(0=最小值,1=第二个最新值)等

它只是根据输入的数字将
skiplength
构建为nothing或
skip=$required
,然后执行一个目录列表,不包括目录名(/a-d)并以相反的日期顺序(/o-d);跳过所需数量的条目,生成一行输出,并退出循环


您可以选择
sourcedir
。当然,如果需要,您可以将
%%a
分配给变量。

虽然此代码块可能会回答此问题,但您始终应该解释为什么会这样做。