Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2012, 18:24   #1
d_adilet
Пользователь
 
Регистрация: 13.01.2010
Сообщений: 49
По умолчанию Автоматическое определение массива папок в bat файле

Здравствуйте уважаемые гуру,
Меня назначили ответственным за бекап данных на нескольких компьютерах. В общем я пару раз покопировал вручную и решил в будущем делать это с помощью батника. Порывшись в интернете нашел то что нужно.
Код:

:: >> Основные настройки скрипта
@ECHO OFF
SETLOCAL enabledelayedexpansion
:: << << <<
:: 
:: >> Назначаем необходимые переменные
:: Папка, куда необходимо копировать резервные копии
SET $BACKUP_DIR_PARENT=K:\BackUp
:: Путь до архиватора
SET $WINRAR=C:\Program Files\WinRAR\WinRAR.exe
:: << << <<

REM >> Определяем массив папок для копирования
SET $FOLDER:01=X:\Рабочие документы
SET $FOLDER:02=X:\pass
SET $FOLDER:03=X:\Административные доки
SET $FOLDER:04=X:\Архивы
SET $FOLDER:05=X:\Инвесторы

:: ...и так далее...
:: << << <<
:: 
:: >> Список файлов, которые не учитывать при проверки изменения папки
SET $FILE_EXCLUDE:01=Thumbs.db
SET $FILE_EXCLUDE:02=.access_log
SET $FILE_EXCLUDE:03=.error_log
SET $FILE_EXCLUDE:04=.cookie
:: << << <<
:: 
:: >> Проход по всем папкам и проверка, есть ли изменения
FOR /f "tokens=2 delims==" %%f IN ('SET $FOLDER') DO (
	SET $FOLDER_CURRENT=%%f

	REM >> Определяем папку для резервных копий текущей папки
	SET $BACKUP_DIR=!$BACKUP_DIR_PARENT!\!COMPUTERNAME!\!$FOLDER_CURRENT::=!
	REM << << <<

	REM >> Если папки не существует, то создаём её
	IF NOT EXIST "!$BACKUP_DIR!" (
		MKDIR "!$BACKUP_DIR!"
	)
	REM << << <<

	REM >> Определение даты последней резервной копии
	REM Через команду DIR получаем список файлов с расширением RAR
	REM Затем выполняем поиск самого свежего (последнего изменённого) файла
	REM Дату последнего изменения устанавливаем исходя из даты изменения самого свежего файла
	SET $LAST_MODIFIED=0
	PUSHD "!$BACKUP_DIR!"
	FOR /f "tokens=1,2,4" %%a IN ('DIR /TW /A-D-H *.rar ^| findstr /B "[0-9]"') DO (
		FOR /f "tokens=1-5 delims=.:" %%i IN ("%%a.%%b") DO (
			IF "%%k%%j%%i%%l%%m" GTR "!$LAST_MODIFIED!" (
				SET $LAST_MODIFIED=%%k%%j%%i%%l%%m
			)
		)
	)
	POPD
	REM << << <<

	REM >> Выполняем поиск изменённых файлов
	SET $IS_MODIFIED=
	PUSHD "!$FOLDER_CURRENT!"
	FOR /f "tokens=1,2,4" %%a IN ('DIR /S /TW /A-D-H ^| findstr /B 
 и т.д.
у меня к Вам просьба как автоматически определить массив папок? (в коде выделено синим) чтобы, не прописывать в ручную. Т.е. выбрать все папки на диске Х:\?
Заранее огромное спасибо.

Последний раз редактировалось d_adilet; 16.06.2012 в 18:36.
d_adilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на BAT-файле JUDAS Операционные системы общие вопросы 6 13.01.2012 21:46
определение элементов массива с++ ZeX Помощь студентам 0 06.12.2011 15:45
Ошибка в .bat файле DreamCrusher Помощь студентам 0 21.12.2009 15:25
Определение полного пути папок TreeView vitawt Общие вопросы Delphi 8 22.02.2009 15:13
Определение свободного места в файле подкачки GrayCat Помощь студентам 3 01.07.2008 08:26