Назад | Перейти на главную страницу

Скрипт, который копирует файл в зависимости от даты изменения

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

Кто-нибудь может мне помочь?

Это сценарий, который я хотел бы запустить в Windows Server 2003.

Заранее спасибо.

Используйте Robocopy, это встроенная функция операционной системы, синтаксис должен быть примерно таким.

Robocopy «\ source» «\ destination» / mir / mon: 1 / mot: 1 / R: 3 / W: 10 / COPY: DAT /log:c:\tools\robolog.txt / NDL / NP / Z

создайте и сохраните это как пакетный файл, чтобы запланированное задание запускало его 23 часа в день, а затем процесс завершил и перезапустил его.

вот ссылка на technet для всех команд и функций http://technet.microsoft.com/en-us/library/cc733145(WS.10).aspx

Вы можете запланировать запуск командного файла на первое число каждого месяца для удаления файлов старше 1 дня (через delage32 из http://home.mnet-online.de/horst.muc/wcon.htm) и скопируйте оставшийся файл в другую папку.

Powershell также может это легко сделать. Вот очищенный фрагмент скрипта, который я использую:

$BaseDirectory = C:\temp
$SelectionFilter = "*.tmp"
$intFileAge = 7
$DueDate = (get-date).addDays(-$intFileAge)

# Create an array of files where CreationDate is before DueDate 
# and it's not a directory

$arrFiles = get-childitem -recurse -path $BaseDirectory -Filter $SelectionFilter | `
Where-object {$_.CreationTime -le $DueDate -and $_.psIsContainer -ne $true}

Foreach ($oldfile in $arrFiles) {

    Copy-Item $oldFile.fullName -destination c:\elsewhere\
}

«Глагол» сценария может быть легко перемещен или удален.