Войти

Показать полную графическую версию : Резервное копирование файла


Dozentz
13-07-2021, 13:08
Имеется скрипт копирования целой папки c созданием текущей даты для копирования
@Echo Off
SetLocal EnableDelayedExpansion
:: ЧТО и КУДА копируем, сколько храним
:: $OLD - КОЛИЧЕСТВО хранимых архивов
Set $SRC=D:\Kadry\data
Set $DST=F:\Backup\oks
Set $OLD=6
:: Находим текущие день/месяц/год
For /F "Tokens=1 Delims=." %%i In ('WMIC OS Get LocalDateTime^|Find "."') Do Set $Time=%%i
Set $Y=%$Time:~0,4%&Set $M=0%$Time:~4,2%&Set $D=0%$Time:~6,2%
Set $M=%$M:~-2%&Set $D=%$D:~-2%
:: Создаем каталог/делаем архив
XCopy /S/E/D/C/Q %$SRC%\* %$DST%\%$D%.%$M%.%$Y:~-2%\
:: Ограничиваем количество архивов
For /F "Delims=" %%i In ('DIR /B/O:-D/A:D %$DST%\??.??.??') Do (
Set /A $OLD-=1
If !$OLD! LSS 0 RD /S/Q "%$DST%\%%i"
)
подскажите как копировать не целую папку а только один файл из неё например 1.txt, а также архивация папки с датой

Elven
13-07-2021, 17:13
Это не ответ, это просто решение на powershell. Никаких претензий к cmd, просто мне скучно, а винды под рукой нет...
$SRC = "D:\Kadry\data"
$DST = "F:\Backup\oks"
$OLD = 6
$filename = "file.name"
$archive_name= (get-date -Format yy.MM.dd)
(Get-ChildItem -Path $SRC $file).FullName | Compress-Archive -DestinationPath $DST$archive_name.zip
while ((Get-ChildItem -Path $DST ??.??.??.zip).Length -gt 6) {
(Get-ChildItem -Path $DST ??.??.??.zip | Sort-Object -Property LastWriteTime -Top 1).Delete()
}

Если имя не указано, то заархивируется все содержимое папки.

megaloman
13-07-2021, 17:37
как копировать не целую папку а только один файл из неё например 1.txt »XCopy /S/E/D/C/Q %$SRC%\1.txt %$DST%\%$D%.%$M%.%$Y:~-2%\
Не тестировал.
Слегка упростил код:@Echo Off
cls
rem Set "$SRC=D:\Kadry\data\*"
Set "$SRC=D:\Kadry\data\1.txt"
Set "$DST=F:\Backup\oks"
Set /A $OLD=6

FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "$ToDay=%%d" &Call Set "$ToDay=%%$ToDay:~6,2%%.%%$ToDay:~4,2%%.%%$ToDay:~2,2%%"

XCopy /S/E/D/C/Q "%$SRC%" "%$DST%\%$ToDay%\"

FOR /F "usebackq Skip=%$OLD% delims=" %%d IN (`2^>nul Dir "%$DST%\??.??.??" /B /O:-D /A:D`) DO Rd /S /Q "%%d"
Pause
Exit /B




© OSzone.net 2001-2012