1

Я пытаюсь создать пакетный сценарий для резервного копирования Access Db с сервера NAS на другой сервер и сохранения последних "n" версий этого файла (n зафиксировано внутри сценария), этот сценарий будет выполняться дважды каждый день

Проблема сейчас в том , что при копировании файла robocopy не будет обновлять дату изменения и из - за этого forfiles не может обнаружить последние дни

Другая проблема заключается в том, что мне нужно сохранить последние n файлов, но forfiles удаляет только через n дней, есть ли способ добиться этого?

Вот мой сценарий до сих пор:

@echo off

set numver=20
set datetime=%date:~-2%%date:~3,2%%date:~0,2%t%time:~0,2%%time:~3,2%
set filename=scep2012.mdb
set origin=\\supercepsrv\supercep
set destin=C:\Teknia Shares\Respaldos\Sistemas\SuperCEP

robocopy "%origin%" "%destin%" %filename% /r:0 /w:2
ren "%destin%\%filename%" "%datetime%_%filename%"
forfiles -p "%destin%" /s /m *.* /d %numver% /c "cmd /c del @path"

:end

1 ответ1

0

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

  • C:\Teknia Shares\Respaldos\Sistemas\SuperCEP\scep2012.mdb (последняя резервная копия)
  • C:\Teknia Shares\Respaldos\Sistemas\SuperCEP\scep2012.mdb.1
  • C:\Teknia Shares\Respaldos\Sistemas\SuperCEP\scep2012.mdb.2
  • C:\Teknia Shares\Respaldos\Sistemas\SuperCEP\scep2012.mdb.3
  • C:\Teknia Shares\Respaldos\Sistemas\SuperCEP\scep2012.mdb.4 (самая старая резервная копия)

тогда в твоем скрипте есть

if EXIST "C:\Teknia Shares\Respaldos\Sistemas\SuperCEP\scep2012.mdb" (
  del "C:\Teknia Shares\Respaldos\Sistemas\SuperCEP\scep2012.mdb.4"
  ren "C:\Teknia Shares\Respaldos\Sistemas\SuperCEP\scep2012.mdb.3" scep2012.mdb.4
  ren "C:\Teknia Shares\Respaldos\Sistemas\SuperCEP\scep2012.mdb.2" scep2012.mdb.3
  ren "C:\Teknia Shares\Respaldos\Sistemas\SuperCEP\scep2012.mdb.1" scep2012.mdb.2
  ren "C:\Teknia Shares\Respaldos\Sistemas\SuperCEP\scep2012.mdb"   scep2012.mdb.1
)

тогда ваша линия робокопии.

Если их будет много, вы можете вместо этого сделать цикл for. Однако вы можете рассмотреть возможность перехода на использование PowerShell, чтобы использовать его более продвинутые функции. До того, как пакетный файл станет слишком укоренившимся в вашем процессе, переключение позже станет намного более трудным.

Обратите внимание, что перед первым запуском этого сценария уже должен существовать файл с именем "C:\Teknia Shares\Respaldos\Sistemas\SuperCEP\scep2012.mdb"

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