【问题标题】:Using a cmd / batch file to get all the files recursively modified or created after a certain date使用 cmd / 批处理文件获取在某个日期之后递归修改或创建的所有文件
【发布时间】:2013-04-10 16:36:03
【问题描述】:

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

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

不幸的是,它不适合我。

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

【问题讨论】:

  • @enzotib 哎呀!我的错我会删除它
  • 您的文件夹中有名为“Yell.tif”的文件吗? (这是dir 语句中的文件掩码。)如果是这样,该列表中是否还有在dir 语句的输出中包含2010 的文件?如果没有,批处理文件将不会回显任何内容,因为您没有任何内容可以回显。 (您似乎也错过了if 语句中的一些% 字符。)
  • @KenWhite ken 非常感谢您的回复。我将 gstmp*yell*.tif 更改为 * 因为我想查看所有文件;然而,我没有意识到关于 2010 年,我将摆脱 ^| findstr 2010` ,顺便说一句,插入符号有什么用?

标签: windows file directory cmd


【解决方案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 有其缺点 - 它更复杂(显然)并且一些奇怪的文件名可能已损坏(如果确实有必要,可以克服这个问题......)。如果您使用合理的文件名,它会完成这项工作...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-09
    • 2010-12-04
    • 1970-01-01
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多