2

В SQL Server с использованием xp_cmdshell я смог загрузить файлы в соответствии с датой изменения, используя команду, например,

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

Но я хочу знать, как загружать файлы в соответствии с датой создания. Любая помощь будет принята с благодарностью.

Был задан вопрос по stackoverflow, но пока нет ответа. Пожалуйста, посмотрите на ссылку, чтобы узнать, как загружать файлы в соответствии с датой создания в командной строке Windows через SQL Server xp_cmdshell.

1 ответ1

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

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 пытается заблокировать исполняемый файл, произнесите "dismiss" и перейдите к загрузке в 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's 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

или с grep gnuwin32

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>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .