【问题标题】:list date created and file name for all files in subdirectories列出子目录中所有文件的创建日期和文件名
【发布时间】:2016-08-26 19:23:25
【问题描述】:

我目前在我的批处理文件中使用以下行来检索我的子目录中标题中包含“完成”一词的 pdf 文件列表。

dir /b /s *COMPLETE*.PDF >Q:\"Personal Folders"\Advertising\"Data Updates"\ePrint\test.csv

有没有一种方法可以更改它以将创建的日期附加到每个文件的开头,以便我可以在 excel 中按日期对它们进行排序?谢谢。

【问题讨论】:

    标签: batch-file cmd directory


    【解决方案1】:

    如何将创建日期附加到每个文件名的开头?

    使用以下批处理文件。

    GetFileCreateDate.cmd:

    @echo off 
    setlocal
    for /f "tokens=*" %%f in ('dir /b /s "*COMPLETE*.PDF"') do (
      for /f "tokens=1,2" %%g in ( 'dir "%%f" /tc ^| findstr /C: "%%~nxf"') do (
        echo %%g,%%h,"%%f"
        )
      )>>Q:\"Personal Folders"\Advertising\"Data Updates"\ePrint\test.csv
    endlocal
    

    注意事项:

    • 输出行将具有以下格式:

      create_date,create_time,"filename"
      

      其中filename 是文件的绝对名称

    • 修改 echo %%g,%%h,"%%f" 以适合您在 csv 文件中所需的格式。

      %%g 是创建日期,%%h 是创建时间,%%f 是绝对文件名。

    示例输出(仅写入“test.csv”):

    F:\test>dir /b /s "*COMPLETE*.PDF"
    F:\test\1complete1.pdf
    F:\test\2complete2.pdf
    F:\test\complete1.pdf
    F:\test\complete2(s).pdf
    
    F:\test>GetFileCreateDate.cmd
    
    F:\test>type test.csv
    26/08/2016,21:28,"F:\test\1complete1.pdf"
    26/08/2016,21:28,"F:\test\2complete2.pdf"
    26/08/2016,21:28,"F:\test\complete1.pdf"
    26/08/2016,21:28,"F:\test\complete2(s).pdf"
    

    进一步阅读

    【讨论】:

    • 感谢您的快速回复。我不确定我是否做错了什么,但是当我运行它时没有任何反应。没有创建 text.csv 文件。如果我手动创建一个 test.csv 文件,则不会写入任何内容。
    • @user3221816 你做错了什么。查看测试输出的更新答案。
    • 哦,我不怀疑我做错了什么。当我尝试从 cmd 提示符运行 GetFileCreateDate.cmd 时,我收到一条消息“找不到文件”,即使它存在于目录中。
    • 您的 find /v "(s)" 可以跳过 有效 文件名,例如COMPLETE(s).PDF。我会使用find ":"
    • findstr /C:"%%~nxf" 以避免在dir 命令重述中对File COMPLETE.PDF0 COMPLETE.PDF此类晦涩 文件名进行虚假匹配。还可以考虑添加/I 开关(不区分大小写的搜索)。对不起,如果我现在看起来像纯粹的挑剔者……
    【解决方案2】:

    下一个代码 sn-p 列出上次写入日期和时间以及文件路径:

    >"Q:\Personal Folders\Advertising\Data Updates\ePrint\test.csv" (
        for /F "delims=" %%G in ('dir /b /s *COMPLETE*.PDF') do echo %%~tG "%%~G"
    )
    

    资源(必读):

    【讨论】:

    • 感谢您的快速响应,但我运行此程序时只得到一个空的 .csv 文件。
    • 此答案返回修改日期而不是创建日期(问题要求)。
    • @DavidPostill 我知道(请阅读最后写入日期和时间)。奇怪的是 OP 得到一个空的 .csv 文件(以及他在你的回答中抱怨它)。
    猜你喜欢
    • 1970-01-01
    • 2011-11-23
    • 2014-01-27
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 2020-06-30
    相关资源
    最近更新 更多