Написание пакетного файла для копирования на основе даты - PullRequest
1 голос
/ 05 февраля 2010

Мне нужно создать пакетный файл, который может копировать файлы из одного пути в другой на основе параметров.

Например, введя «datecopy -m 8 c: / copyfrom /*.* d: / copyto /*.*», найдет все файлы в c: / copyfrom, датированные менее 8 месяцев, и скопирует их d: / copyto-папка. В качестве альтернативы вместо -m для месяца я мог бы использовать -h для часа или -y для года.

Конечно, это не полная программа, но я должен начать. Спасибо за любые возможные советы. :)

Ответы [ 3 ]

1 голос
/ 05 февраля 2010

Я знаю, что это может показаться не так, как будто он отвечает на ваш вопрос, но избавьте себя от большей боли и душевной боли, чем вы можете себе представить, делая это в jscript или VbScript

В последнее время я смотрю на Windows Powershell , в основном Windows Scripting on speed.
Однако вы можете быть уверены, что Windows Script Host (jscript & VBScript) уже работает в Windows начиная с XP (возможно, начиная с W2k).

Мой совет - НЕ использовать пакетные команды Windows.

0 голосов
/ 15 февраля 2010

Вот скрипт, который будет копировать файлы не старше 8 месяцев.

# Script TimedCopy.txt
var str from, to, timediff, list, file
lf -n "*" $from ($ftype=="f") AND ($fmtime > addtime(diff(("-"+$timediff)))) > $list
while ($list <> "")
do
    lex "1" $list > $file
    system copy ("\""+$file+"\"") ("\""+$to+"\"")
done

Команда lf (list files) довольно гибкая. Его страница справки находится на http://www.biterscripting.com/helppages/lf.html.

Для запуска сценария скопируйте и вставьте сценарий в файл C: /Scripts/TimedCopy.txt, запустите biterscripting и выполните эту команду.

script "C:/Scripts/TimedCopy.txt" from("c:/copyfrom") to("d:/copyto") timediff("240000000")

Объяснение аргумента timediff

«240000000» означает 240 дней, 00 часов, 00 минут, 00 секунд

«120000» означает 12 часов, 00 минут, 00 секунд

«3000» означает 30 минут, 00 секунд

«30» означает 30 секунд

и т.д.

(По дате я предполагаю, что вы имеете в виду измененный. Если вы имели в виду созданный, используйте $ fctime вместо $ fmtime в сценарии.)

Надеюсь, это поможет.

0 голосов
/ 05 февраля 2010

Предположим, что вы можете собрать набор старых добрых инструментов unix, взгляните на утилиту find. Он имеет опции, которые вы просите, и многое другое.

find c:/copy/from -atime 240 | xargs cp "{}" c:/copyto
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...