bat ежедневного копирования файла :: В помощь системному администратору :: Компьютерный форум Ru.Board
Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » bat ежедневного копирования файла

Модерирует : lynx, Crash_Master, dg, emx, ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

primaht



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день. Собственно сабж. Есть файл в папке который нужно копировать ежедневно, а папка "Архив" должна располагаться в той же папке, что и рабочий файл. (вложенная папка)
Структура внутри папки архива:
Архив: -> год -> месяц -> ИмяФайла_YYYY.MM.DD
Каждый день новая копия файла должна сохраняться в соответствующий год-месяц.
На форумах нашел скрипт, но он делает только папку с датой. Подскажите, как сделать что-бы была структура у архивов.
 
 
 
@echo off
SetLocal EnableDelayedExpansion
 
rem =============================
rem ====== admin variables ======
rem =============================
 
set DirName=my_folder
set SourceDir=\\192.168.0.100\for_all\ОТДЕЛ ПРОДАЖ\СТОК\Архив
set BackupDir=\\192.168.0.100\for_all\ОТДЕЛ ПРОДАЖ\СТОК
set NumFolders=10
 
rem =============================
rem ======== 7-Zip path =========
rem =============================
 
set a7z=%ProgramFiles%\7-Zip\7z.exe
 
rem =============================
rem == create backup directory ==  
rem ==== DD.MM.YYYY_hhmmmss =====
rem =============================
 
set h=%time:~0,2%
set h=%h: =0%
set FullBackupDir=%BackupDir%%date%\
set FullBackupDir=%BackupDir%%date%\
md %FullBackupDir%
 
rem =============================
rem ====== copy directory =======
rem =============================
 
robocopy %SourceDir% %FullBackupDir%%DirName%\ /E /ZB /J /NFL /NDL /NJH /NJS /NC /NS /NP 2>nul >nul
 
rem =============================
rem ====== zip directory ========
rem =============================
 
"%a7z%" a -tzip -bb0 -bd -sdel "%FullBackupDir%%DirName%.zip" "%FullBackupDir%" 2>nul >nul
 
rem =============================
rem ==== remove old folders =====
rem =============================
 
for /f "tokens=* delims=" %%D in ('dir %BackupDir% /ad /b /o-d') do (
    if not %%D=="" (
        if not !NumFolders!==0 (
            set /a NumFolders-=1
        ) else (
            rd /s /q %BackupDir%%%D 2>nul >nul
        )
    )
)

Всего записей: 4 | Зарегистр. 09-12-2010 | Отправлено: 12:07 28-05-2024 | Исправлено: primaht, 12:45 28-05-2024
Sadok

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
посмотри nnbackup. вроде, умел.

Всего записей: 1355 | Зарегистр. 04-01-2003 | Отправлено: 12:50 28-05-2024
alexnov66



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
primaht

Цитата:
Архив: -> год -> месяц -> ИмяФайла_YYYY.MM.DD

код надо в тег коде делать что бы форум ни чего не сьел.
 
Что бы была структура надо определять отдельно в переменных год месяц день и соответственно создавать директории на основе этих переменных.
у меня батник самописанный работает так, только winrar использую, плюс сначала определяется на какой винде запущен и соответственно создаётся папка с названием винды.
насколько помню в название файла или папки двоеточие у времени надо заменять, винда не понимает, или в название файла писать отдельно часы, минуты.
 
если в названии пробел надо брать в кавычки, да и путь указан непонятный на какой диск писать, а так создастся там откуда запущен батник.
set SourceDir=\\192.168.0.100\for_all\ОТДЕЛ ПРОДАЖ\СТОК\Архив
set BackupDir=\\192.168.0.100\for_all\ОТДЕЛ ПРОДАЖ\СТОК
 
 
вот тут надо слэш ставить а не в параметрах переменной в конце
"%FullBackupDir%\%DirName%.zip"
 
и зачем два раза одна переменная указана
set FullBackupDir=%BackupDir%%date%\
set FullBackupDir=%BackupDir%%date%\
 
если создать папку с текущей датой то переменные слэшэм разделять а не писать всё слитно, и тогда в директории переменной BackupDir создастся папка текущей даты
set FullBackupDir=%BackupDir%\%date%
 
ну или так с параметрами определения года месяца и дня приведёнными ниже
set FullBackupDir=%BackupDir%\%VDATEG%\%VDATEM%\%VDATED%
 
устаревшие файлы можно очистить так и оставить за последние 30 дней, к примеру с расширением zip

Код:
forfiles /P "%BackupDir%\%VDATEG%\%VDATEM%" /S /M *.zip /D -30 /C "cmd /c del /q /f @file"

 
 
 

Код:
 
rem Определяем дату
rem вывод года
set VDATEG=%date:~6,4%
rem вывод месяца
set VDATEM=%date:~3,2%
rem вывод дня
set VDATED=%date:~0,2%
rem вывод всей даты
set VDATE=%date:~-10%
rem замена точки на дефис или тире
rem set VDATE="%VDATE:.=-%"
 
rem Формируем директорию на основании даты год\месяц\день
set VDATE_DIR=%VDATEG%\%VDATEM%\%VDATED%
 
rem Определяем время
rem вывод часов
set VTIMEH="%time:~0,2%"
 
rem вывод минут
set VTIMEM=%time:~3,-6%
 
rem вывод секунд
set VTIMES=%time:~6,2%
 
rem вывод полного времени
rem set VTIMEALL=%time:~-10%
 
rem замена двоеточия на дефис или тире
rem set VTIMEALL=%VTIMEALL::=-%
 
set VTIME=%VTIMEH%.%VTIMEM%
 
rem Создаём имя файла на основании даты и времени
set DATE_TIME=%VDATE%_%VTIME%
 

 
вообще раздел по написанию батников тут.
http://forum.ru-board.com/topic.cgi?forum=5&topic=50615&start=3900#lt [?]

Всего записей: 1511 | Зарегистр. 29-08-2005 | Отправлено: 15:57 28-05-2024 | Исправлено: alexnov66, 05:26 29-05-2024
primaht



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо добрый человек, разобрался.

Всего записей: 4 | Зарегистр. 09-12-2010 | Отправлено: 10:57 29-05-2024
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » bat ежедневного копирования файла


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru