使用cmd / batch文件获取在特定日期之后递归修改或创建的所有文件

时间:2013-04-10 16:36:04

标签: windows file directory cmd

我试图获取在特定日期之后创建或修改的整个目录结构中的所有文件:

for /f "usebackq tokens=1-7* delims=/: " %I in (`dir/tc/o-d/s gstmp\*yell*.tif ^
     ^| findstr 2010`) do  (
        if "%K%I%J %N %L%M" GEQ "20100806 PM 0457"  (
            echo.   [ %K-%I-%J %L:%M %N    %P. ]
        )
 )

我从Stack Overflow问题 Batch File: Iterate Over Files Modified Since a Given Date 获得了这个天才脚本。

我将gstmp\*yell*.tif更改为*,因为我想查看所有文件。

不幸的是,它不适合我。

它根本没有回音。我做错了什么?

1 个答案:

答案 0 :(得分:1)

@ECHO OFF
SETLOCAL

:: Create a dummy directory
MD c:\dummy
XCOPY /L /s /d:04-01-2013 c:\startdir c:\dummy >u:reportfile.txt

:: Way the second
SET "line="
DEL u:\reportfile2.txt 2>nul
FOR /f "delims=" %%i  IN (
 'XCOPY /L /s /d:04-01-2013 c:\startdir c:\dummy'
 ) DO CALL :output "%%i"

:: Delete the dummy directory
RD /s /q c:\dummy

GOTO :eof

:output
IF DEFINED line ECHO %line% >>u:reportfile2.txt
SET line=%~1
GOTO :eof

以下是两种方式:

XCOPY列出了以mm-dd-yyyy格式指定的日期之后创建/修改的所有文件,因为每个文件都将被复制到创建的虚拟空目录中。 / L仅LISTS要复制的文件。

第一种方法添加一行报告文件计数。第二种方法抑制输出。方法2有它的缺点 - 它更复杂(显然)并且一些奇怪的文件名可能被破坏(如果真的有必要,这可以克服......)。如果您使用合理的文件名,它将完成这项工作......