Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Копирование файла каждые восемь часов (http://forum.oszone.net/showthread.php?t=352115)

v79italya 13-10-2022 07:16 2994094

Копирование файла каждые восемь часов
 
Здравствуйте
Возможно ли с помощью bat делать каждые 8 часов копию файла xlsx в папку? При этом удалять в папке файлы, созданные более месяца назад. Для удобства добавлять к имени файла время и дату.
Я так понимаю нужен bat и планировщик(для запуска bat каждые 8 часов) в Windows.
Или возможно такое только с помощью bat. т.е. скопировал bat на нужный комп, прописал имя копируемого файла и имя папки, в которую копировать. И все работало бы)

dmitryst 13-10-2022 08:50 2994097

v79italya, планировщик нужен, чтобы запускать ваш батник по расписанию. Сам батник должен содержать только функции копирования (robocopy, например) и поиска/удаления старых файлов. Пример копирования на сетевой диск
Код:

@echo off
 
rem  USE FULL PATH TO NETWORK DRIVE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

net use x: \\192.168.1.2\windows pascword@ /user:backupuser
set "folder=\\192.168.1.2\windows\backup\SQL_back"
set "source=d:\backup_sql"
set "mask=*.*"

rem с датой и временем
rem robocopy "%source%" "%folder%\%date%\%time:~,2%.%time:~3,2%" "%mask%">nul
rem только дата, без времени
robocopy "%source%" "%folder%\%date%" "%mask%">nul

net use x: /delete

del /Q "d:\backup_SQL\*.*"

exit /b

У меня выполняется копирование в одну папку, добавляется дата (и время) и после завершения копирования на сетевой диск удаляются все файлы в папке. Вам надо будет воспользоваться функцией ForFiles /p “C:\path\to\folder” /s /d -30 /c “cmd /c del /q @file”. Замените 30 на нужное количество дней, более старые файлы будут удаляться.

v79italya 13-10-2022 09:11 2994099

dmitryst, спасибо!
Попробую воспользоваться.
А нет варианта как выглядит код не с сетевым диском, а с папкой и файлом xlsx

dmitryst 13-10-2022 10:04 2994102

Код:

@echo off
 

set "dest=d:\kopiruem_suda"
set "source=d:\backup_sql"
set "mask=*.xlsx"

rem с датой и временем
robocopy "%source%" "%dest%\%date%-%time:~,2%.%time:~3,2%" "%mask%">nul

exit /b

Как-то так... Более знающие коллеги поправят, если не так ;)
ПС. копируется в папку с датой и временем, как добавить к названию файла - не знаю, коллеги подскажут. Для одного-единственного файла можно написать как-то так
Код:

echo f|XCOPY D:\BACKUP\base.xlsx E:\BACKUP\%Date:~6,4%.%Date:~3,2%.%Date:~0,2%_base.xlsx /Y

v79italya 13-10-2022 12:46 2994107

dmitryst, спасибо!
Также нашел сегодня прогу Cobian Backup . Установилась правда с ошибками. Гоняю пока

megaloman 13-10-2022 15:19 2994121

v79italya,
Код:

@Echo Off
>nul Chcp 1251
        Set "FileIn=Z:\Soft_In\делать каждые 8 часов копию файла.xlsx"
        Set /A Narc=90

        Set "BoxOut=Z:\Soft_Arc"
rem        Set "BoxOut=\\ServerName\Test2"
rem        Set "BoxOut=\\192.168.100.23\Test1"

        If Not Exist "%FileIn%" (Echo File "%FileIn%" not found &Pause &Exit /B 2)
        FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "@Tdate=%%d" &Call Set "@Tdate=%%@TDate:~0,12%%"
        For %%f In ("%FileIn%")        Do Set "Ext=%%~xf" &>nul Copy %%f "%BoxOut%\%@Tdate% %%~nxf"

        FOR /F "usebackq Skip=%Narc% delims=" %%f IN (`2^>nul Dir "%BoxOut%\20?????????? *%Ext%" /A:-D /B /O:-N`) DO Del "%BoxOut%\%%f"
Exit /B

При наличии кириллицы в путях сохранить скрипт в кодировке 1251
Укажите свой путь к исходному файлу. Он может быть сетевым.
Укажите свою папку, куда складываете копии. Она тоже может быть сетевой. Для примера оставил закомментированные строки.
Я не хочу в CMD возиться с датами - возможно, но громоздко.
Поэтому, если Вы делаеие копии каждые 8 час=3 копии в сутки = 90 копии в месяц, то я предлагаю сохранять последние 90 копии. Вы можете указать иное число.
Естественно, Вы будете осчастливлены, если этот скрипт будет выполняться планировщиком.

v79italya 14-10-2022 08:32 2994149

megaloman, спасибо! Сохраняет файл при клике. Осталось Планировщик настроить


Время: 17:10.

Время: 17:10.
© OSzone.net 2001-