Как я могу написать скрипт, чтобы найти последний обновленный файл и скопировать в определенный каталог - PullRequest
0 голосов
/ 07 июля 2010

У меня есть процесс, который загружает файл из веб-браузера. у него всегда одно и то же имя (его нельзя изменить), поэтому каждый файл загружается как файл ([последний номер])

так что в этом каталоге у меня есть:

joe.pdf
Джо (1) .pdf
Джо (2) .pdf
и т.п . , ,

Теперь я хотел бы, чтобы скрипт взял «последний файл» (в данном случае joe (2) .pdf) и скопировал его в другой каталог.

что-то вроде GetLatestFile ("joe") и скопируйте в "X: \ mydirectory"

Кто-нибудь может придумать простой способ сделать это.

Ответы [ 4 ]

2 голосов
/ 07 июля 2010

Есть ли у вас предпочтения, на каком языке вы пишете сценарий?

Я бы не стал называть имя файла, я бы выбрал любой язык сценариев, который вы собираетесь использовать, прокрутите каталог и посмотрите атрибуты файла для каждого файла, чтобы выбрать самый последний, а затем переместите это к вашей целевой директории. Это было бы довольно тривиально в консольном приложении .NET с классами, доступными в пространстве имен System.IO. (а именно классы DirectoryInfo, FileInfo и File)

1 голос
/ 10 июля 2010

это использует sed, а регулярные выражения http://gnuwin32.sourceforge.net/packages/sed.htm

создает файл bat, который выполняет эту работу.я поместил файл bat в c: \ crp, чтобы он не стал последним файлом.

в качестве демонстрации, я создал последний файл latestfile.txt

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

C:> md c: \ crp

C:> copy / y con latestfile.txt

fgfdgd ^ Z

1 файл (ов)скопировано.

C:> dir / od / ad / b |найти / N / V "QWERTY" |найти "[1]" |sed -es / [1] (. *) / cop y \ d32 \ 1 \ d32c: \ newdir /> c: \ crp \ copyit.bat

C:> тип c: \ crp \ copyit.bat

copy latestfile.txt c: \ newdir

1 голос
/ 08 июля 2010

Итак, поскольку достаточно отсортировать последнее имя файла по дате, я предлагаю что-то вроде:

@echo off & setLocal enabledelayedexpansion

for /f "tokens=* delims= " %%a in ('dir /b/a-d/o-d') do (
set N=%%~Fa
goto :done
)
:done
echo !N!

Замените последнюю команду echo на "copy ..." или все, что вы хотите сделать с самым новым файлом.

НТН!

Редактировать> Если файлы не находятся в текущем каталоге, соответственно измените команду "dir"

1 голос
/ 07 июля 2010

Попробуйте: XCOPY C:\BATCH\*.* C:\UPLOAD /M

Поместите код в текстовый файл и переименуйте его в whateveryouwant.bat и выполните.

Обязательно отредактируйте исходную и целевую папки по своему вкусу.

Это то, что вы ищете?

...