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


2

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

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

但我想知道如何加载文件 创建日期 。任何帮助将非常感激。

有关stackoverflow的问题,但尚无答案。请查看链接了解详情 如何通过SQL Server xp_cmdshell在Windows命令提示符下根据创建日期加载文件


我对forfiles并不熟悉,这条线看起来并不简单,我可能会误解你的问题,这可能不相关但是怎么样? dir /? 展示 dir /t:c 这是创作时间
barlop

谢谢@barlop,很抱歉我的问题不够明确,实际上我想加载扩展名为“.jpg”的所有文件名,包括创建日期和存储在表中的完整目录路径。一个示例结果应该是类似的 8/18/2015 11:13:08 AM "Z:\LDB1 App Export\Top Star_Aluminium Frames & Furniture (B)-31267.jpg"
kolunar

我明白你的意思了。我刚试过这个 for /f "eol=: delims=" %F in ('dir /b /s') do @echo %~ftzaF 但它不起作用。 %tF不显示创建时间..即使在目录上使用/ t:c也是如此。所以我不确定。
barlop

如果你有一个简洁的编译器,你可以编译它 pastebin.com/raw.php?i=6fGPGDBc 然后就像跑步一样 pastebin.com/raw.php?i=eJV8zYcd 所以你可以使用那个小程序来帮助你做你想做的事......虽然它有点作弊。
barlop

这更进一步,所以它使用这个小程序在所有txt文件上运行它你可以将txt改为jpg pastebin.com/8U0GWP0j 这样就列出了所有文件及其创建时间。您可以将该输出放在一个文件中并输入文件|找到“02/06/2010”或您想要的任何日期
barlop

Answers:


0

这是作弊,因为它涉及到编译一个有助于实现此目的的小程序。它涉及一个简单的c#程序,但主要是cmd。

我们的想法是,如果只有cmd包含一个程序/命令,当给定文件名时,它会在一行上给出,文件的完整路径和创建日期/时间。然后在cmd中,可以使用cmd的命令,将(显示文件的路径和创建日期/时间)命令应用于每个文件。所以我写了一个小程序,可以采用文件名并显示其完整路径和创建日期/时间。然后我在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>

这样就创建了一个

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>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.