如何在 Windows 命令提示符中根据创建日期加载文件

如何在 Windows 命令提示符中根据创建日期加载文件

在 SQL Server 中使用 xp_cmdshell,我能够根据以下内容加载文件修改日期使用命令例如

z: & forfiles /m *.jpg /s /d 07/16/2015 /c “cmd /c echo @fdate @ftime @path”

但我想知道如何根据创建日期. 如能提供任何帮助我将非常感激。

在 stackoverflow 上有人提问,但尚未得到答复。请查看链接了解详情如何通过 SQL Server 的 xp_cmdshell 在 Windows 命令提示符中根据创建日期加载文件

答案1

这有点作弊,因为它需要你编译一个小程序来帮助完成这个。它需要一个简单的 c# 程序,但主要是 cmd。

我的想法是,如果 cmd 包含一个程序/命令,当给定一个文件名时,它会在一行中给出文件的完整路径和创建日期/时间。然后在 cmd 中,可以使用 cmd 的 for 命令,将该(显示文件的路径和创建日期/时间)命令应用于每个文件。所以我编写了一个小程序,它可以获取文件名并显示其完整路径和创建日期/时间。然后我在 cmd 中使用它。

该程序..

C:\blah>type a.cs
using System.IO;

class asdf
{

 public static void Main(string[] args) {
    if(args.Length==0) {
         System.Console.WriteLine("Pass a filename");
         return;
     }
    System.IO.FileInfo fileInfo = new FileInfo(args[0]);
    System.Console.Write(fileInfo.FullName+"      ");

     System.DateTime creationTime = fileInfo.CreationTime;
    System.Console.WriteLine("cdt "+creationTime);

     }


}
C:\blah>

编译

C:\blah>csc a.cs
Microsoft (R) Visual C# Compiler version 4.0.30319.18408
for Microsoft (R) .NET Framework 4.5
Copyright (C) Microsoft Corporation. All rights reserved.


C:\blah>

这样就创建了一个.exe

a.exe 是一个小程序,当传递文件名作为参数时,会提供完整路径和创建日期/时间

C:\blah>a.exe w.obj<ENTER>
C:\blah\w.obj      cdt 25/07/2015 1:03:52 AM

C:\blah>

其余的是 cmd

如果你没有 C# 编译器

我在这里添加了一个指向 a.cs(上面的源代码)a.exe 的链接,由于 chrome 会尝试阻止任何 exe,因此您可以下载 a.ex2 并重命名它。或者,当 Chrome 尝试阻止 exe 时,说“关闭”,然后转到 chrome 中的下载并说恢复文件。但无论您想怎么做,您都可以获得该 EXE。如果您想这样做,也许 visual studio express(如 visual studio 的免费小版本)会有 csc.exe 让您编译它。

http://ge.tt/2LdAiGN2

一旦你有了这个小程序,你就可以在cmd中执行此操作

c:\blah>for /r %f in (*.jpg) do @a.exe %f
c:\blah\a.jpg      cdt 31/07/2015 3:55:40 PM
c:\blah\a10.jpg      cdt 3/11/2013 8:19:07 AM
c:\blah\a11.jpg      cdt 3/11/2013 8:19:16 AM
c:\blah\a12.jpg      cdt 3/11/2013 8:48:45 AM
C:\blah\dff\Calendar.jpg      cdt 25/08/2009 3:00:02 AM
C:\blah\dff\CheckDST.jpg      cdt 28/07/2005 2:00:02 AM

因此,您可以执行该命令,但将其转储到文件中

C:\blah>del mynewfile.a

C:\blah>for /r %f in (*.jpg) do @a.exe %f >>mynewfile.a

C:\blah>

然后你可以使用 find 或 gnuwin32 的 grep

C:\blah>find "22/05/2015" mynewfile.a

---------- MYNEWFILE.A
C:\blah\sdff\a.jpg      cdt 22/05/2015 5:54:53 AM
C:\blah\sdff\a2.jpg      cdt 22/05/2015 6:20:40 AM
C:\blah\sdff\b.jpg      cdt 22/05/2015 5:56:12 AM

或者使用 gnuwin32 的 grep

C:\blah>grep "22/05/2015" mynewfile.a
C:\blah\sdff\a.jpg      cdt 22/05/2015 5:54:53 AM
C:\blah\sdff\a2.jpg      cdt 22/05/2015 6:20:40 AM
C:\blah\sdff\b.jpg      cdt 22/05/2015 5:56:12 AM

C:\blah>

相关内容