【问题标题】:Creating a list with file name, date created, date modified创建包含文件名、创建日期、修改日期的列表
【发布时间】:2014-09-22 14:59:53
【问题描述】:

查询这两个日期的最明智的方法是什么。首选 PowerShell 或 Windows Batch 解决方案。 我想要一份关于该主题的列表:

文件名、创建日期、最后修改时间

我知道: Dir 有 /t:[A,W,C] 但找不到一次显示多个日期的方法。 对于文件有 @fdate @ftime 只查询修改日期。

【问题讨论】:

  • Get-ChildItem 通过管道传输到Select-Object 就可以了。这是有据可查的

标签: windows date powershell batch-file


【解决方案1】:

如果可以接受 PowerShell:

Get-ChildItem | Select-Object -Property Name, CreationTime, LastWriteTime

【讨论】:

    【解决方案2】:
    wmic datafile where (drive="C:" and path="\\somedir\\somesubdir\\") get Caption,CreationDate,LastModified
    

    这不是一个完整的脚本,而只是一个示例。将驱动器和路径更改为您想要列出的目录(注意路径中的双斜杠)。您还应该注意WMIC 输出是 unicode(不像命令) 而且 WMIC 在 XP 家庭版中不可用。

    您还可以使用 jscript 中的构建(每个窗口都有它)并创建混合 .bat/jscript(将脚本保存/使用为 .bat):

    @if (@X)==(@Y) @end /*JScript comment**
    
    @echo off
    cscript //E:JScript //nologo "%~f0" "%~1"
    exit /b 0
    
    ***************End of JScript comment**/
    
    WScript.Echo("====starting===");
    var args=WScript.Arguments;
    var folderC=args.Item(0);
    if (WScript.Arguments.lengrh == 1 || args.Item(0)==""  ) folderC = ".";
    
    WScript.Echo("Checking "+folderC);
    
    function fileLIster(folderC){
    
        var fso = new ActiveXObject("Scripting.FileSystemObject");
        var folder = fso.GetFolder(folderC);
    
        var fc = new Enumerator(folder.files);
        var s = "";
        for (; !fc.atEnd(); fc.moveNext()) {
            s += fc.item() + " Created:[" + fc.item().DateCreated  + "] Modified:[" + fc.item().DateLastModified+"]" ;
            s += "\r\n";
        }
        WScript.Echo(s);
    
    }
    fileLIster(folderC);
    

    这是一个简单的 bat 文件,它接受单个参数作为您要在其中列出文件的目录并打印文件名、创建日期和修改日期。

    【讨论】:

      【解决方案3】:

      不是很快,但它可以工作,而且我认为它与语言环境无关:

      @echo off
      for %%F in (*) do for /f %%C in (
        'dir /tc "%%F"^|findstr "^[0-9]"'
      ) do for /f %%M in ("%%~tF") do echo "%%F", %%C, %%M
      


      要快得多,但我认为这取决于为您的语言环境定义的时间格式。您可能需要更改在第一个 FOR /F 循环中捕获的标记:

      @echo off
      for /f "tokens=1,4*" %%A in (
        'dir /a-d /tc *^|findstr "^[0-9]"'
      ) do for /f %%M in ("%%~tC") do echo "%%C", %%A, %%M
      

      我的时间格式是HH:MM AM。如果您的时间格式是没有 AM/PM 的 24 小时格式,那么我认为您需要"tokens=1,3*"

      【讨论】:

        【解决方案4】:

        如果你想在 PowerShell 中看到这样的效果:

         Directory: C:\project\CNN I\Maya                             
        
        Mode                 LastWriteTime         Length Name 
        ----                 -------------         ------ ---- 
        -a----         1/11/2021  11:36 PM          32187 ocean wake foam.JPG                                                   
        -a----          1/6/2021  12:28 AM         121100 ocean_clean.ma                                                        
        -a----          1/4/2021   3:59 PM         122199 ocean_clean_1.ma           
        

        请尝试
        > get-childitem | sort-object -property name, creationtime, lastwritetime

        您看不到创建日期,但它实际上是按名称和创建日期 (creationtime) 排序,然后是修改日期 (lastwritetime)。如果您想验证这一点,请尝试> get-childitem | sort-object lastwritetime。它将按修改日期列出文件。

        【讨论】:

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