Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/23: Рейтинг темы: голосов - 23, средняя оценка - 5.00
UserUnknown)
0 / 0 / 0
Регистрация: 07.09.2012
Сообщений: 1
1

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

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

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

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

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

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

Бэкап файлов каждую неделю
Здравствуйте, стоит windpws 10 enterprise ltsb на сервере с 2-мя дисками. Надо что бы предположим...

Создать простой бэкап нужных файлов
Требуется сделать бэкап (архивация) нужной информации на компьютере: Имеется компьютер, на котором...

Бэкап папки с удалением и возобновлением расшаривания
Помогите доделать батник, принцип такой. если есть попка backup_data_base то снимаем расшаренную...

1
Dragokas
Эксперт WindowsАвтор FAQ
17065 / 7120 / 861
Регистрация: 25.12.2011
Сообщений: 10,931
Записей в блоге: 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 Кб, 116 просмотров)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2012, 03:24

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

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

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


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

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

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