0

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

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*.tifjust *,因为我想查看所有文件。

不幸的是,它对我不起作用。

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

4

1 回答 1

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

这里有两种方法:

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

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

于 2013-04-10T17:10:51.733 回答