Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.93/27: Рейтинг темы: голосов - 27, средняя оценка - 4.93
UserUnknown)
1

Бэкап папок 1С

11.09.2012, 09:47. Просмотров 5311. Ответов 1
Метки нет (Все метки)

Сложилась такая ситуация. Из 1С нужно сделать бэкапы папок, чтобы эти бэкапы расположились по папкам День Неделя Месяц Год. Вот пример до чего я пока что дошёл:

Bash
1
2
3
set datetemp=%date:~-10%
MD D:\BackUp\Day\%datetemp%
XCopy  "D:\1c\*.*"  "D:\BackUp\Day\%datetemp%"
Т.е надо делать сегодняшний бэкап в папку Day, чтобы все бэкапы дольше 7 дней переходили в папку Неделя, потом от туда в месяц и год.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.09.2012, 09:47
Ответы с готовыми решениями:

txt файл с именами папок внутри самих папок (в кодировке 1251)
Добрый вечер ) Есть несколько сотен папок, в каждой из которых нужно создать файл album.txt в...

Поиск по папок по маске и перемещение найденных папок в другие папки
Добрый день, у меня возникла проблема, прошу помочь в написании батника. Есть основная папка в...

Excel / Очистка конкретный папок от старых папок и файлов с исключением
Доброго времени суток! Excel: Есть ListBox (в коде ListDel), в котором мы создаем список папок....

Динамическое создание папок. Неверное именование папок. Что делать?
Доброй ночи! Столкнулся со следующей проблемой. Цикл1{ ... ... // Цикл2

1
Эксперт WindowsАвтор FAQ
17193 / 7246 / 868
Регистрация: 25.12.2011
Сообщений: 11,049
Записей в блоге: 16
16.09.2012, 03:24 2
Папка не содержит такого атрибута, как "дата модификации".
Есть атрибут "Дата создания", но он не подходит так как будет постоянно меняться после перемещения.

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

Добавлено через 3 часа 25 минут
Вот что получилось:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
@Echo off
setlocal enabledelayedexpansion
::Имя папки (без кавычек), где хранятся исходные папки для архивирования за сегодняшний день
set $from=e:\2
::Имя папки (без кавычек) для хранения бекапов
set $backup=e:\1
::Временный файл с заданиями на перемещение папок
set $Task=%temp%\MyTask.cmd
::Имена папок для сортировки по давности
set $day=%$backup%\Day
set $week=%$backup%\Week
set $month=%$backup%\Month
set $year=%$backup%\Year
::Установка кол-ва дней, после которых папки разбрасывать по давности
set Dday=0
set Dweek=7
set Dmonth=30
set Dyear=365
::Создаем папки, если их еще нет
if not exist "%$day%" md "%$day%"
if not exist "%$week%" md "%$week%"
if not exist "%$month%" md "%$month%"
if not exist "%$year%" md "%$year%"
::Перенос между папками по дате модификации
::::Перераспределяем папки дат, если устарели
::::::Разбор папки дневной давности + сегодня
Call :SortMe "%$day%" "%$week%" -%Dweek%
::::::Разбор папок недельной давности
Call :SortMe "%$week%" "%$month%" -%Dmonth%
::::::Разбор папок месячной давности
Call :SortMe "%$month%" "%$year%" -%Dyear%
::::Из рабочей папки ($from) разносим по датам
Call :SortMe "%$from%" "%$year%" -%Dyear%
Call :SortMe "%$from%" "%$month%" -%Dmonth%
Call :SortMe "%$from%" "%$week%" -%Dweek%
Call :SortMe "%$from%" "%$day%" -%Dday%
Удаления файла задания
::if exist %$Task% Del /f /q %$Task%
::Пауза для чтения результатов работы
Echo.
Echo.Бекап завершен.
pause>nul
Goto :Eof
 
:SortMe
:::: ===== Передаваемые параметры: =====
::%1 - каталог для забора папок -> в Backup
::%2 - каталог, куда складывать <- Backup-папку
::%3 - разность дат (в днях). Формат только такой: -Х, где Х - число дней.
:: Например [-7] - все папки, в которых последний файл изменен позже 7 дней от текущей даты.
 
::%%a - это имя папки (исходных бекапов) внутри считываемого каталога (%1)
for /f "delims=" %%a in ('dir "%~1" /b /a:d') do (
  Rem Находим последний модифицированный файл %%i
  for /f "delims=" %%i in ('dir "%~1\%%a" /B /A:-D /O:D /T:W') do (set $LastFile=%%i)
  Rem Проверяем файл %%i в папке %~1\%%a на дату изменения %3
  forfiles.exe /p "%~1\%%a" /m "!$LastFile!" /c ^
    "cmd /c echo.move /y "%~1\%%a" "%~2\%%a">%$Task%" ^
    /d %3 2>nul&& Call %$Task%
  Rem Вызов реализован через промежуточный CMD-файл, т.к. исходная папка блокируется утилитой Forfiles
)
::^&^&(echo.Успешно: %~1\%%a --^^^> %~2\%%a)
Пока не удалось подружить с пробелами в именах папок.
И лог.режим на экран перестал работать, пока пытался исправить этот баг.

P.S. В Windows XP утилиты forfiles нет, ее можно взять у серверной W2K3 или Microsoft Windows 2000 Professional Resource Kit.
Хм, странно проверил в Resource Kit-е нет, хотя пишут, что должна быть. Выкладываю х64 и х32-бит из своей Win7.
2
Вложения
Тип файла: zip Forfiles.zip (49.2 Кб, 118 просмотров)
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.09.2012, 03:24

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

В папке нахотится неизвестное количество папок, а в каждой из папок по одному текстовому файлу...
Ребята помогите пожалуйста! У меня такая задача: в папке нахотится неизвестное количество папок, а...

Замена папок на исполняемые файлы со скрытием реальных папок
Добрый вечер, на старом компьютере появился вирус, который портит флешки. Все папки заменяются на...

Получить md5 папок в папке и пропустить несколько папок
Доброго времени суток.Делаю проверку папок и вложенных в них папок по md5.Всего нужно проверить 3...

Получить список папок и вложенных папок, отсортированных по размеру
Как можно получить список папок и вложенных папок, отсортированных по размеру


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.