1

Тема: CMD/BAT: Цикл в резервном копировании

Используя скрипт для резервного копирования в Linux работа в цикле осуществляется быстро и просто:


!/bin/bash

timestamp=`date "+%Y-%m-%d_%H-%M"`
backupFS="/folder1 /folder2 /folder3"
backupTO=/mnt/backup
KeepTime=7

if [ -d $backupTO ]; then
   find $backupTO -maxdepth 1 -name \*.tar.gz -mtime +${KeepTime} -exec rm -f '{}' \;
                for i in $backupFS
                do
                j=`expr ${i//\//-}`
                tar -zcvf $backupTO/`hostname`.${timestamp}.${j}.tar.gz $i
                done
fi

Это маленький кусочек скрипта.

Пытаюсь сделать нечто подобное в Windows но на мой взгляд это не будет работать так как надо:


CHCP 1251
set CurrentDate=%date%
set ProgramPath="C:\Program Files\......"
ser BackupTo=\\backupserver\backup
set Param1=param1

set Base="Base1 Base2 ... BaseN"

for %%I in (%Base%) do %ProgramPath% %Param1% %Base%%I% %User% %Pass% dump file_%CurrentDate%_.dat

Это сильно упрощенная версия. Мне интересен запуск именно в цикле, для упрощения скрипта, Сейчас это выглядит как огромный скрипт из множетва повторяющихся строк. Перед каждым запуском программы приходится заново объявлять переменную %Base%, что крайне неудобно и неинформативно.
В переменной Base все слова написаны по русски через пробел. Если так сделать нельзя, то можно ли организовать массив, но не объявляя дополнительной переменной в которой необходимо будет указать общее количество переменных.

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